React Native-如何基于化简器值的变化触发函数?

问题描述

我有一个问题,关于如何在不同组件的reducer值发生变化时如何触发一个组件中的函数

我目前在Home组件中有一个函数可以在ComponentDidMount中运行。如果我的值this.props.reducer.run为true,则会触发该函数。初始状态设置为true,因此该功能会在应用首次加载时触发。

在我的Profile组件中,我有一个切换开关,它具有将this.props.reducer.run切换到truefalse功能。还原器值发生更改时,是否可以在Home中触发我的函数

下面是我所拥有的代码的模拟,我想知道ComponentDidUpdate是否是我应该看的,如果可以的话,请多多指导:

Home.js

...

myFunction() = > {
   console.log('fired')
}

ComponentDidMount() {
   //runs on load
   if(this.props.reducer.run == true) {
     this.myFunction()
   }
}

...


**Profile.js**

...

toggleRun = () => {
   this.props.setRun(!this.props.reducer.run)
}
...

解决方法

是的,您可以使用componentDidUpdate进行此操作。调用componentDidUpdate时,它将传递组件props的先前值(我们称之为prevProps)。通过将prevProps.reducer.runthis.props.reducer.run进行比较,可以确定值是否更改,如果已更改,则相应地调用函数。

或者,如果这是一个功能组件,则可以使用useEffect来实现。