Javascript 在Redux状态更改后如何执行某些操作?

Javascript 在Redux状态更改后如何执行某些操作?,javascript,reactjs,react-native,redux,Javascript,Reactjs,React Native,Redux,我想在应用Redux状态后运行takePic()函数。假设代码如下: this.props.setCameraState({ foo: bar, foo2: bar }).then(() => takePic()); 我是在地方政府职能上这样做的,如下所示: this.setState({ foo: bar, foo2: bar, }, async () => takePic()); 但是我不知道如何在Redux上执行此操作。您可以使用useffe

我想在应用Redux状态后运行
takePic()
函数。假设代码如下:

this.props.setCameraState({
    foo: bar,
    foo2: bar
}).then(() => takePic());
我是在地方政府职能上这样做的,如下所示:

this.setState({
    foo: bar,
    foo2: bar,
}, async () => takePic());

但是我不知道如何在Redux上执行此操作。

您可以使用
useffect
检查更新的全局状态,并执行副作用,在您的示例中,它调用
takePic()

因此,假设您的redux是
连接到组件的:

const MyComponent = ({ foo, foo2 }) => {
  useEffect(() => {
    takePic();
  }, [foo, bar]);
};

您可以按以下方式创建异步操作:

export const setCameraState = () => async (dispatch) => {
    // Write your action logic here
};
然后在打电话给do的时候

this.props.setCameraState({
    foo: bar,
    foo2: bar
}).then(() => takePic());

另外,您可以尝试使用
componentdiddupdate
hook

componentDidUpdate(prevProps) {
    if(prevProps.foo !== this.props.foo || prevProps.foo2 !== this.props.foo2) {
        takePic();
    }
}

你能做的就是有一个变量来跟踪,就像你用加载器做的一样。一旦动作被分派,您就将loader设置为true,当它被取回时,您可以将其设置为false,一旦设置为false,您就可以触发一个我认为是这种方法的函数。但是有没有更好的办法呢?嗯,我也要检查一下,我正在投票表决这个问题,以便真正得到答案。请投票表决你认为有用的答案。:)Utkarshramodgupta谢谢:)
componentDidUpdate(prevProps) {
    if(prevProps.foo !== this.props.foo || prevProps.foo2 !== this.props.foo2) {
        takePic();
    }
}