2 回答
TA贡献1852条经验 获得超1个赞
您不能依赖以下功能:
function handleChange(e) {
setAnswers([{ name: e.target.name, checked: e.target.value }]);
console.log(answers);
}
要访问新状态,这是因为该setState函数是异步的,因此您正在尝试 console.log 一个可能尚未设置的值。因此,您需要使用生命周期方法或 useEffect 挂钩answers作为依赖项(第二个参数需要一个数组 so as [answers])。
useEffect 在第一次渲染和渲染答案状态更改之后运行
useEffect(() => {
console.log(answers) // get my new expected value of answers
}, [answers])
TA贡献1818条经验 获得超7个赞
useEffectanswers像这样更改时将重新运行:
import react, {useState, useEffect} from 'react';
const [answers, setAnswers] = useState([{}]);
handleChange = e =>{
setAnswers([{ name: e.target.name, checked: e.target.value }]);
}
useEffect(() => {
console.log(answers); //get the updated state here
}, [answers]);
添加回答
举报