我一直在使用 React 16.7-alpha 中的新钩子系统,当我处理的状态是对象或数组时,我会陷入 useEffect 中的无限循环。
首先,我使用 useState 并使用一个空对象启动它,如下所示:
const [obj, setObj] = useState({});
然后,在 useEffect 中,我再次使用 setObj 将其设置为空对象。作为第二个参数,我传递 [obj],希望它不会更新content对象的内容没有改变。但它不断更新。我想是因为无论内容如何,这些总是不同的对象,使得 React 认为它不断变化?
useEffect(() => {
setIngredients({});
}, [ingredients]);
数组也是如此,但作为一个原语,它不会像预期的那样陷入循环。
使用这些新的钩子,在检查内容是否更改时应该如何处理对象和数组?
将空数组作为 useEffect 的第二个参数传递使其仅在挂载和卸载时运行,从而停止任何无限循环。
useEffect(() => {
setIngredients({});
}, []);
我在关于 React hooks 的博客文章中对此进行了澄清:https://www.robinwieruch.de/react-hooks/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)