Reactjs 我可以在react中的useEffect()中将数组用作依赖项吗?
在react中的useffect()钩子中将数组用作依赖项Reactjs 我可以在react中的useEffect()中将数组用作依赖项吗?,reactjs,react-hooks,next.js,Reactjs,React Hooks,Next.js,在react中的useffect()钩子中将数组用作依赖项 const [productCategories, setproductCategories] = useState([]); useEffect(() => { // set something.. if(categories){ const filtered = categories.filter((c)=>c.available); setproductCategories(
const [productCategories, setproductCategories] = useState([]);
useEffect(() => {
// set something..
if(categories){
const filtered = categories.filter((c)=>c.available);
setproductCategories(filtered);
}
}, [categories]);
这里的类别已经是来自服务器的数组。
我想,如果此类别发生更改,请设置productCategories状态。
当我尝试这个方法时,它进入无限调用。而不是
[类别]
使用[JSON.stringify(类别)]
当数组引用发生更改时,它将进入无限循环,最好尝试此操作。您可以使用:
const [productCategories, setproductCategories] = useState([]);
useEffect(() => {
// set something..
if(categories){
const filtered = categories.filter((c)=>c.available);
// when productCategories update
// your component gonne re-render
setproductCategories(filtered);
}
}, [productCategories]);
您不应该使用productCategories而不是categories吗???问题我可以看到,即使categories是一个[]数组,if(categories)将有条件地变为true,并且在内部调用
setproductCategories
,这将再次更新cause-re-render->从而导致无限循环如果从服务器获取categories
,我看不到使用useffect
的意义。您只需执行以下操作:const[productCategories,setproductCategories]=useState(()=>categories.filter((c)=>c.available))代码>但productCategories也是数组,它将在一个无限循环中运行。不知怎的,它起了作用,但请详细说明。