如何知道是props改变了还是useEffect的内部状态



我有一个内部状态的组件,我想使用道具更新它的初始状态,所以我也必须观察道具。然而,我想知道什么时候它的道具改变了,这样我就可以运行与它相关的函数一次,并保持它远离内部组件状态。

这是因为我无法正确地更新内部状态,因为每当useEffect触发时,它总是会运行

下面的useEffect是用于我正在设置的从父组件状态可见或不可见的模态(所以它总是挂载的)。

useEffect(() => {
// I want to run the following once
if (Object.getOwnPropertyNames(propState).length !== 0) {
console.log(propState);
setState(()=> {
innerState = propState.user_name
});

}
}, [propState, innerState]);

可以在inner state和propState中检查值。如果它们相等,则跳过setState.

useEffect(() => {
if (propState?.user_name && propState !== innerState.user_name) {
setState(()=> {
innerState = propState.user_name
});

}
}, [propState, innerState]);

相关内容

  • 没有找到相关文章

最新更新