gpt4 book ai didi

javascript - 如果我需要更新 2 个依赖变量,React hooks 如何只执行一次副作用函数

转载 作者:行者123 更新时间:2023-12-03 13:18:23 28 4
gpt4 key购买 nike

假设我有以下使用 react Hook 的组件

const Component = (props) => {
[state1, setState1] = useState();
[state2, setState2] = useState();
useEffect(()=>{
// use state1 and state2 as param to fetch data
...
}, [state1, state2])

onSomethingChange = () => {
setState1(...);
setState2(...);
}

return (..);
}

onSomethingChange 触发时,我认为它会调用副作用函数两次,因为我在同一依赖项数组中更新了 2 个不同的状态变量。我打算将这 2 个变量重构为 1 个对象,但我想我会先将它们作为 2 个单独的变量进行测试。

我观察到副作用函数只执行一次,即使我在同一个依赖数组中更新 2 个不同的状态变量,这就是我想要的,但我不知道为什么。有人可以解释一下它在引擎盖下是如何工作的吗?

最佳答案

这是因为 React 有时可能会将多个状态更改批处理为一个更新以提高性能。如果状态更新是从基于 React 的事件中触发的,React 将批量更新状态,这就是为什么你的副作用 block 只被调用一次的原因。有关更多信息,您可以引用此线程:https://github.com/facebook/react/issues/14259

关于javascript - 如果我需要更新 2 个依赖变量,React hooks 如何只执行一次副作用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60310136/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com