使用 React Hook 将数据添加到对象内的数组
Adding data to Array inside an object using React Hook
我对如何在 React 中通过钩子使用 setState 将数组数据添加到对象内的数组列表感到困惑。有人可以帮助我吗?
下面是我的代码,每次我控制台记录它总是 return 空数组。
import React, { useState } from 'react';
const Main = props => {
const [state, setState] = useState({
noteArray: [],
noteText: '',
});
const addNote = () => {
if(state.noteText){
var d = new Date();
let x = {
'date': d.getFullYear() +
"/" + (d.getMonth() + 1 ) +
"/" + d.getDate(),
'note': state.noteText
}
setState({...state, noteArray: x});
console.log(state.noteArray);
}
}
.......................the rest of code
}
基本上你做错的是你覆盖了你的数组而不是向它添加新值。您可以使用以下方法轻松完成此操作:-
import React, { useState } from 'react';
const Main = props => {
const [state, setState] = useState({
noteArray: [],
noteText: '',
});
const addNote = () => {
if(state.noteText){
var d = new Date();
let x = {
'date': d.getFullYear() +
"/" + (d.getMonth() + 1 ) +
"/" + d.getDate(),
'note': state.noteText
}
setState({...state, noteArray: [...state.noteArray, x]});
console.log(state.noteArray);
}
}
.......................the rest of code
}
我对如何在 React 中通过钩子使用 setState 将数组数据添加到对象内的数组列表感到困惑。有人可以帮助我吗? 下面是我的代码,每次我控制台记录它总是 return 空数组。
import React, { useState } from 'react';
const Main = props => {
const [state, setState] = useState({
noteArray: [],
noteText: '',
});
const addNote = () => {
if(state.noteText){
var d = new Date();
let x = {
'date': d.getFullYear() +
"/" + (d.getMonth() + 1 ) +
"/" + d.getDate(),
'note': state.noteText
}
setState({...state, noteArray: x});
console.log(state.noteArray);
}
}
.......................the rest of code
}
基本上你做错的是你覆盖了你的数组而不是向它添加新值。您可以使用以下方法轻松完成此操作:-
import React, { useState } from 'react';
const Main = props => {
const [state, setState] = useState({
noteArray: [],
noteText: '',
});
const addNote = () => {
if(state.noteText){
var d = new Date();
let x = {
'date': d.getFullYear() +
"/" + (d.getMonth() + 1 ) +
"/" + d.getDate(),
'note': state.noteText
}
setState({...state, noteArray: [...state.noteArray, x]});
console.log(state.noteArray);
}
}
.......................the rest of code
}