Reactjs 反应使用效果挂钩不';当依赖项改变时不会触发
我有这个钩子Reactjs 反应使用效果挂钩不';当依赖项改变时不会触发,reactjs,Reactjs,我有这个钩子 useEffect(() => { console.log('mark useEffect', compatibleProducts); if (Object.keys(compatibleProducts.rims).length === 0 && Object.keys(compatibleProducts.tires).length === 0) return; }, [compatibleProducts,..
useEffect(() => {
console.log('mark useEffect', compatibleProducts);
if (Object.keys(compatibleProducts.rims).length === 0
&& Object.keys(compatibleProducts.tires).length === 0) return;
}, [compatibleProducts,...]);
如图所示,(兼容的_产品)的状态在最后一行发生了变化。在我检查的状态中,确实添加了值,但是useEffect钩子不会再次触发
为什么会这样
在:
在下列情况后陈述:
减速器动作:
你应该试试
异径管
case TYPE.COMPATIBLE\u PRODUCTS.SUCCESS:
返回{
……国家,
兼容产品:{
…状态。兼容产品,
…action.compatibleProducts,
timespan:+新日期()
}
}
在您的组件中
useffect(()=>{
...
},[compatibleProducts.timespan]);
这是redux吗?你能告诉我们在哪里变异状态吗?您看到操作正在运行的事实并不意味着您正在返回一个新状态(改变当前状态是错误的)。@keul我已编辑了我的问题您的数组“compatibleProducts”的对象标识保持不变。您可以复制内容compatibleProducts:[…action.compatibleProducts]
或将其传播到deps数组useffect(()=>{},[…compatibleProducts]
@Martin回答得好,但您的意思是:useffect(()=>{},[{…compatibleProducts}]
,因为useffect(()=>{},[…compatibleProducts]
给了我一个错误类型“CompatibleProductsInterface”必须有一个返回迭代器的“[Symbol.iterator]”方法。
。即使如此,它仍然不起作用谢谢你的评论。它确实有帮助