【发布时间】:2021-02-17 14:20:53
【问题描述】:
请检查代码框:https://codesandbox.io/s/bold-hamilton-k1nzs
在我运行代码的那一刻,我得到一个无限循环,您可以检查控制台以查看条目如何呈指数增长。最终网站崩溃了。
我有一个这样的状态变量:
const [checkbox, setCheckBox] = useState({});
然后我在useEffect里面调用一个函数:
useEffect(() => {
createCheckbox();
});
这是 createCheckbox 函数:
const createCheckbox = () => {
let checkboxObj = {};
rows.forEach((e) => {
checkboxObj[e.id] = false;
});
setCheckBox(checkboxObj);
};
我在第 76 行有一个 console.log 来展示这个问题。它是 console.log(checkbox)
知道发生了什么吗?
【问题讨论】:
-
我看到这个的第一个问题是,为什么你需要在 useEffect 中创建 Checkbox() ?
-
该效果没有依赖并更新状态,所以结果是渲染循环。添加依赖项。检查条件 on 该依赖项。您希望
createCheckbox何时运行? -
@Spangle 我上面有一个代码框。基本上我想在第一次加载时将复选框初始化为空/假。
标签: javascript reactjs material-ui