我如何使用ObjectArray来使用Effect的第二个参数

时间:2019-08-03 06:56:39

标签: reactjs react-hooks

即使对象的一个​​小元素发生变化,我也想使用useEffect

useEffect(()=>{do Something},[some ObjectArray])

我知道对象和数组仅指向特定的地址值。

非常担心React会认识到useEffect的第二个参数的内容即使对象的值改变也没有改变。

我尝试过

useEffect(()=>{do Something},[JSON.stringfy(Object)]);

我不确定我要使用的方法是否有效。

而且key属性也使用JSON.stringify,但是我不知道是否可以将这个长字符串放在key值中。

喜欢

<SomeComponent 
 key={Json.stringFy(someObject)}]
/>

只要来自外部的对象的内容发生变化。 希望组件的状态为更改。

**谢谢您的回答。所以我确切地知道该怎么办。确切的问题是对象是否已更改,而不是是否触发useEffect。感谢大伙们! **

1 个答案:

答案 0 :(得分:2)

您不应该对它进行字符串化处理,因为这会在每次渲染时比较昂贵。它将检查每个字符,这对于大型数组可能很难。您只应使用immutability-helperimmer更新不可变的数组。这将使您轻松修改数组中的对象并返回更改后的新数组,这将触发新的useEffect。如果您将纯组件或备注用于功能组件,这不仅会给您的钩子带来好处,还会提高性能。