我有一个组件,它以一个深的对象作为参数。我希望能够基于我传递的属性动态地修改我的组件——但出于某种原因,我的
useEffect()
useffect()
不“认识”
<MyComponent groups={sourceArray}/>
function MyComponent({ groups }) {
useEffect(() => {
//Do something
}, [groups])
为了澄清,我的数据是一个对象数组。
useEffect(() => {
if (prevGroups && !isEqual(prevGroups, groups)) {
// do something
}
}, [groups])
const usePrevious = (value) => {
const ref = useRef();
useEffect(() => {
ref.current = value;
});
return ref.current;
};
const prevGroups = usePrevious(groups);
第二个同样失败的解决方案(外部库)
我试着使用下面的
library
最后,我不确定这里发生了什么,也不确定如何在更新中运行useEffect循环。
简单的解决方案是删除依赖项数组,但这只会使useEffect循环无限运行
更新
对象具有以下结构:
另外,我将该值作为useState()传递,即:
const funcToChangeObj = () => {
//logic to change sourceArray
setSourceArray(changedArray)
}