异步功能后强制 React 组件更新?
Force React component update after async function?
我的反应组件中有以下代码:
onSubmit(e) {
e.preventDefault();
this.props.doSomething();
this.setState({
inputField: this.props.myReducer.someValue
});
}
因此,每当有人按下 'Submit' 按钮时,都会执行某些功能,然后我的输入字段的状态会更新为 'myReducer' 中更改的相应值。
但是,有一个问题。 'doFunction' 是一个异步操作,这意味着之后直接设置状态不会导致更新,因为状态在之后立即设置时还没有被函数更改。
我将如何处理 react/redux 中的此类事件?
这与doSomething()
的性质有关。您应该始终收到函数已完成的通知。 99% 的时间,something 是一个 Ajax 调用,在大多数库中,return 是一个承诺:
this.props.doSomething()
.then(() =>
this.setState({
inputField: this.props.myReducer.someValue
});
如果 doSomething()
没有 return 承诺,您可能应该对其进行编辑或扩充,使其成为 return 承诺。如果需要回调,你可以这样做:
new Promise(this.props.doSomething)
.then(() =>
this.setState({
inputField: this.props.myReducer.someValue
});
我的反应组件中有以下代码:
onSubmit(e) {
e.preventDefault();
this.props.doSomething();
this.setState({
inputField: this.props.myReducer.someValue
});
}
因此,每当有人按下 'Submit' 按钮时,都会执行某些功能,然后我的输入字段的状态会更新为 'myReducer' 中更改的相应值。
但是,有一个问题。 'doFunction' 是一个异步操作,这意味着之后直接设置状态不会导致更新,因为状态在之后立即设置时还没有被函数更改。
我将如何处理 react/redux 中的此类事件?
这与doSomething()
的性质有关。您应该始终收到函数已完成的通知。 99% 的时间,something 是一个 Ajax 调用,在大多数库中,return 是一个承诺:
this.props.doSomething()
.then(() =>
this.setState({
inputField: this.props.myReducer.someValue
});
如果 doSomething()
没有 return 承诺,您可能应该对其进行编辑或扩充,使其成为 return 承诺。如果需要回调,你可以这样做:
new Promise(this.props.doSomething)
.then(() =>
this.setState({
inputField: this.props.myReducer.someValue
});