Javascript 异步功能后强制反应组件更新?
我的react组件中有以下代码:Javascript 异步功能后强制反应组件更新?,javascript,reactjs,asynchronous,redux,react-redux,Javascript,Reactjs,Asynchronous,Redux,React Redux,我的react组件中有以下代码: onSubmit(e) { e.preventDefault(); this.props.doSomething(); this.setState({ inputField: this.props.myReducer.someValue }); } 因此,每当有人按下“提交”按钮时,就会执行一些函数,然后输入字段的状态就会更新为“myReducer”中更改的相应值 然而,有一个问题doF
onSubmit(e) {
e.preventDefault();
this.props.doSomething();
this.setState({
inputField: this.props.myReducer.someValue
});
}
因此,每当有人按下“提交”按钮时,就会执行一些函数,然后输入字段的状态就会更新为“myReducer”中更改的相应值
然而,有一个问题doFunction'是一个异步操作,这意味着直接设置状态之后不会导致更新,因为当函数在之后设置状态时,状态还不会发生更改
我如何在react/redux中处理这样的事情?这与
doSomething()
的性质有关。您应该始终收到函数完成的通知。99%的情况下,something是一个Ajax调用,在大多数库中,它都会返回一个承诺:
this.props.doSomething()
.then(() =>
this.setState({
inputField: this.props.myReducer.someValue
});
如果doSomething()
不返回承诺,您可能应该对其进行编辑或扩充,使其返回承诺。如果需要回调,您可以执行以下操作:
new Promise(this.props.doSomething)
.then(() =>
this.setState({
inputField: this.props.myReducer.someValue
});
使
doSomething
接受回调函数作为参数,或使doSomething
返回一个Promise
。非常感谢!doSomething()是一个使用redux thunk的函数,但是我不确定现在如何在此基础上构建一个承诺?将分派包装为:新承诺(分派(createAction(args))
——取决于中间件,分派将返回标量或承诺,这两种方式都可以。