Javascript React hooks:如何检测特定状态变量何时更新

Javascript React hooks:如何检测特定状态变量何时更新,javascript,reactjs,react-native,react-hooks,asynchronous-javascript,Javascript,Reactjs,React Native,React Hooks,Asynchronous Javascript,在React hook之前,我会使用componentdiddupdate(prevProps,prevState),如果我只想在this.state.a更新时执行给定的代码,我会这样做 if (prevState.a !== this.state.a) { <...> } if(prevState.a!==this.state.a){ } 如何在useffect()中实现同样的效果?函数采用依赖关系数组,您可以在其中提及要跟踪更改的状态 useEffect(() =>

在React hook之前,我会使用
componentdiddupdate(prevProps,prevState)
,如果我只想在
this.state.a
更新时执行给定的代码,我会这样做

if (prevState.a !== this.state.a) {
  <...>
}
if(prevState.a!==this.state.a){
}

如何在
useffect()
中实现同样的效果?

函数采用依赖关系数组,您可以在其中提及要跟踪更改的状态

useEffect(() => {
    //your code here
}, [a])

useEffect接受称为依赖项数组的第二个参数。您可以在此处传递状态,并且每当依赖项数组中的值发生更改时,就会执行该操作

useEffect(() => {
   console.log('i get executed whenever a changes')
}, [a]) 
[stateOne,stateTwo]表示,如果内部定义的任何状态变量发生变化,useEffect将运行。也会在安装后第一次运行

[]意味着它将只运行一次


它被称为useEffect的依赖项数组。

useEffect
采用第二个参数,称为依赖项数组。您可以在此处传递状态变量,
useffect
将仅在状态变量更改时执行回调函数

const[a,setA]=useState(0);
useffect(()=>{
//在这里编写代码

},[a])a
b
c
,我可以为它们中的每一个编写
useffect
?是的。你想要多少就有多少。您可以在一个依赖项数组中包含多个变量,这样,如果其中任何一个变量发生更改,将运行useEffect,或者您可以为变量设置单独的useEffects。请注意,如果你的useEffect中有一个依赖项数组,那么当你的组件挂载时,它仍然会第一次运行。我发现这一点很神奇,这就解释了
useEffect
hook。这里的其他人似乎也遗漏了您想要与以前的值进行比较的部分。
useEffect(() => {
//Your code
}, [stateOne, stateTwo])