【发布时间】:2021-08-20 11:59:44
【问题描述】:
在react中使用数组作为useEffect()钩子的依赖。
const [productCategories, setproductCategories] = useState([]);
useEffect(() => {
// set something..
if(categories){
const filtered = categories.filter((c)=>c.available);
setproductCategories(filtered);
}
}, [categories]);
这里 categories 已经是来自服务器的数组。 我想,如果此类别更改设置 productCategories 状态。 当我尝试这个时,它会进入无限调用。
【问题讨论】:
-
您不应该使用 productCategories 而不是类别吗????
-
问题我可以看到,即使类别是 [] 数组, if(categories) 也会有条件地变为真,并且在您内部调用
setproductCategories将更新导致重新渲染 -> 从而导致无限循环 -
如果您从服务器获取
categories,我看不出使用useEffect的意义。你可以简单地做到这一点const [productCategories, setproductCategories] = useState(() => categories.filter((c) => c.available) );
标签: reactjs react-hooks next.js