[英]How to test state update and component rerender after async call in react
[英]Force React component update after async function?
我的react組件中有以下代碼:
onSubmit(e) {
e.preventDefault();
this.props.doSomething();
this.setState({
inputField: this.props.myReducer.someValue
});
}
因此,每當有人按下“提交”按鈕時,就會執行某些功能,然后我的輸入字段的狀態將根據在“ myReducer”中更改的相應值進行更新。
但是,有一個問題。 “ doFunction”是一個異步操作,這意味着事后直接設置狀態不會導致任何更新,因為當事后設置狀態時,該功能尚未更改狀態。
我將如何在react / redux中處理這樣的事情?
它與doSomething()
的性質有關。 您應該始終收到該功能已完成的通知。 99%的時間是Ajax調用,在大多數庫中,它返回一個Promise:
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
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.