簡體   English   中英

在不保留React和Redux功能的情況下更新道具

[英]Update props without leaving function in React and Redux

我有簡單的檢查,當用戶單擊按鈕時必須執行以下操作:

<button 
    onClick={() => {
        this.props.validatingActions.validate(this.props.Email.Value);
        this.props.submittingActions.submitValidation(this.props.Email.IsValid);
}}>Submit</button>

首先,當電子郵件有效或無效時, Redux存儲中的電子郵件會進行驗證,然后執行某些操作。

問題是, this.props在執行this.props.validatingActionsvalidate之后不會更新,它們僅在離開匿名onClick函數之后才更新,因此this.props.Email.IsValid具有舊值。

在這種情況下如何正確更新道具?

請注意,您不應(而且在大多數情況下不能)更改組件自己的道具。 請檢查該SO 答案以獲取更多詳細信息。

答案更新

還請注意,React setState是異步的,因此在調用setState之后不會立即進行狀態更改。 結果,基於狀態的道具在派遣動作后也不會立即更新。

更新prop后,將重新渲染組件,如果您需要立即更改prop值,我認為組件渲染功能中不需要它,而是在其他地方決定是否執行其他操作。 如果是這樣,則應在操作中進行處理:您可以使用redux-thunk調度異步或條件操作。

當您要使用表單時,請嘗試使用Redux-Form http://redux-form.com/6.5.0/examples/syncValidation/

改變道具不是解決問題的方法。 您的驗證和提交邏輯在哪里? 直接在減速機上? 要么在同一動作上做這兩項事情,要么使用副作用庫一個接一個地做。 無論如何,從動作的名稱來看,我不明白為什么要為此使用redux動作。 對我來說,驗證輸入聽起來並不像狀態改變。 您應該使用簡單的功能對其進行驗證,然后根據是否可以執行相應操作(執行一個操作)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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