javascript - 如何知道它是改变的道具还是 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]);
解决方案
您可以检查内部状态和 propState 中的值。如果它们相等,则在跳过 setState 时。
useEffect(() => {
if (propState?.user_name && propState !== innerState.user_name) {
setState(()=> {
innerState = propState.user_name
});
}
}, [propState, innerState]);
推荐阅读
- java - Togglz 在功能切换时返回 403
- ffmpeg - 通过 FFMPEG 管道使文件持续时间松散
- hive - 根据 Hive 中的大小进行过滤
- php - 使用 codeigniter 和 ajax 发送电子邮件,电子邮件已发送但出现错误消息
- objective-c - UICollectionViewFlowlayout 行为奇怪
- c++ - What's causing my prime numbers to all vanish? [C++]
- java - 提交 Spring 表单时无法点击控制器
- c# - WPF Webview's IsPrivateNetworkClientServerCapabilityEnabled ignored when using ItemTemplate
- netbeans - JMS ActiveMQ and Netbeans
- c# - 签名证书的指纹