【发布时间】:2021-08-09 10:45:32
【问题描述】:
我想知道为什么当 const 数组更改时 useEffect 不调用。
useEffect 只能在数组状态更改时运行吗?
const itemsInCart = [];
useEffect(() => {
if (itemsInCart === undefined)
setItemsQuantity('');
} else if (itemsInCart.length > 99)
setItemsQuantity('99+');
else {
setItemsQuantity(itemsInCart.length)
}
}, [itemsInCart]);
【问题讨论】:
-
使数组进入状态。然后它会触发
-
@OliverIlmjärv 如果我不想在数组更新时重新渲染,我该怎么办?
itemsInCart数组作为道具发送到许多组件,并且在删除项目时我不想重新渲染页面。 -
您也可以编写一个自定义函数,在其中更新 itemsInCart 数组,该数组也将更新 itemsQuantity 值,您不需要使用 useEffect
-
"如果我不想在数组更新时重新渲染怎么办?"将数组存储到
useRef钩子中并写入itemsInCart.current -
@OliverIlmjärv
itemsInCartprops 仅在此useEffect()中用于此组件。
标签: reactjs react-hooks render use-effect