当依赖项发生变化时,React useEffect 钩子不会触发

时间:2021-02-18 08:45:49

标签: reactjs

我有这个 useEffect 钩子

useEffect(() => {
    console.log('mark useEffect', compatibleProducts);
    if (Object.keys(compatibleProducts.rims).length === 0
            && Object.keys(compatibleProducts.tires).length === 0) return;

}, [compatibleProducts,...]);

enter image description here

正如您在图片中看到的,(COMPATIBLE_PRODUCTS) 的状态在最后一行发生了变化。在我检查的状态下,确实添加了值,但 useEffect 钩子不会再次触发。

这样做的原因是什么?

之前的状态:enter image description here 之后声明:enter image description here

减速器动作: enter image description here

1 个答案:

答案 0 :(得分:1)

你应该试试 在减速机中

case TYPE.COMPATIBLE_PRODUCTS.SUCCESS:
            return {
                ...state,
                compatibleProducts: {
                    ...state.compatibleProducts,
                    ...action.compatibleProducts,
                    timespan: + new Date()
                }
            }

在你的组件中

useEffect(() => {
    ...
}, [compatibleProducts.timespan]);