簡體   English   中英

在異步功能后是否強制更新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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM