【发布时间】:2021-06-08 02:48:09
【问题描述】:
案例一:
const [present, setPresent] = useState([]);
useEffect(() => {
for (var j = 1; j <= totalPeriod; j++) {
setPresent([
...present,
{
period: j,
present: true,
},
]);
}
}, []);
案例 2:
const [present, setPresent] = useState([]);
let createPresent = [];
for (var j = 1; j <= totalPeriod; j++) {
createPresent = [
...createPresent,
{
period: j,
present: true,
},
]
}
useEffect(() => {
setPresent(createPresent);
}, []);
当我在案例 1 中尝试使用 useEffect() 内部的循环更新 present 状态时,present 状态不会更新。但是,当我在useEffect() 之外单独使用循环并创建一个数组,然后在情况 2 中将其分配给 present 状态时,present 状态正在更新。
这背后的原因是什么?为什么在案例 1 中当前状态没有更新?
【问题讨论】:
标签: javascript node.js reactjs react-hooks mern