即使对象的一个小元素发生变化,我也想使用useEffect
。
赞
useEffect(()=>{do Something},[some ObjectArray])
我知道对象和数组仅指向特定的地址值。
非常担心React会认识到useEffect
的第二个参数的内容即使对象的值改变也没有改变。
我尝试过
useEffect(()=>{do Something},[JSON.stringfy(Object)]);
我不确定我要使用的方法是否有效。
而且key属性也使用JSON.stringify
,但是我不知道是否可以将这个长字符串放在key值中。
喜欢
<SomeComponent
key={Json.stringFy(someObject)}]
/>
只要来自外部的对象的内容发生变化。 希望组件的状态为更改。
**谢谢您的回答。所以我确切地知道该怎么办。确切的问题是对象是否已更改,而不是是否触发useEffect。感谢大伙们! **
答案 0 :(得分:2)
您不应该对它进行字符串化处理,因为这会在每次渲染时比较昂贵。它将检查每个字符,这对于大型数组可能很难。您只应使用immutability-helper或immer更新不可变的数组。这将使您轻松修改数组中的对象并返回更改后的新数组,这将触发新的useEffect。如果您将纯组件或备注用于功能组件,这不仅会给您的钩子带来好处,还会提高性能。