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]”方法。
。即使如此,它仍然不起作用谢谢你的评论。它确实有帮助