首页 > 解决方案 > 有没有办法等待状态的变化?(不是设置状态)

问题描述

我想等待共享状态的变化并对其采取行动,所以:

function Foo() {
  const [bar, setBar] = useContext(myContext)

  const someHandler = async () => {      
    doSomething()
    while(true) {
      await stateDidChange(bar)
      doSomething()
    }
  }

  // apply someHandler to a button, etc
}

(是的,我知道我可以通过删除 while 循环并等待重新渲染来实现类似的效果 - 幽默我:))

是否有像stateDidChange(someRandomState)上面使用的函数,或者可以通用编写?

标签: reactjsreact-hooksreact-async

解决方案


它被称为componentDidReceiveProps(prevProps, prevState)或只是一个useEffect带有您要作为依赖项跟踪的 prop/state 值的钩子:

useEffect(() => {

}, [bar]);

推荐阅读