Javascript 在Redux状态更改后如何执行某些操作?
我想在应用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
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();
}
}