2016-03-13 48 views
3

這個問題是關於在哪裏把表單元素驗證在redux中。我feeeeel好像我應該有一個onValueChange事件調度一個動作到reducer驗證和更新值(無效或有效,因爲它可能),以及「isValid」屬性的狀態,使該元素可以顯示一個錯誤。相反,我可以在操作中進行驗證,如果它失敗,則僅派發失敗操作。redux在redux驗證

一個注意事項是,我更喜歡匿名函數命名來擴展react.component。

我想我應該改變這個名稱,以便將驗證放在redux流中的適當位置。

+0

我會說「這取決於」。我更喜歡在它所關注的組件的事件處理程序中處理實際驗證,暫時忘記Redux,並根據結果分派適當的操作。我覺得在你真正改變應用程序的狀態之前,減速器不應該被牽扯進來。 – dannyjolie

+0

或者你可以在你的組件中進行驗證。中間狀態不屬於Redux imo。提交有效表單後,將該狀態保存在Redux中。 –

回答

2

保持組件中的驗證。我聽到很多「保持所有狀態在減少」,但我試圖只保留我絕對需要在減少。使用具有錯誤屬性的組件狀態,並且如果您的驗證失敗,則在錯誤屬性上設置狀態。還有,還原形式:http://redux-form.com/4.2.0/#/?_k=mhjui4是簡單和複雜表單的一個很好的庫。

+0

嘿,不想讓你掛斷,當我再來一次工作時,我會接受你的回答或更新我的發現。不要你認爲我放棄了它。 – Raif

+0

對,我猜這是前一陣子,但我得出了同樣的結論,即存在適合於redux和其他狀態的組件和狀態的狀態。所以我去組件控制它自己的狀態,直到它提交。 – Raif

-1

如果您不允許「拒絕」更新並觸發不同的操作,您如何將任何商業邏輯放入reducer中? 如果設計人員允許減速器返回一個動作,例如,您可以在存儲器中存儲相同類型的其他對象時驗證表單數據,同時它們可以隨時使用(例如,以確保添加的用戶的電子郵件是唯一的),然後執行更改(或不執行)並觸發清除表單的操作或報告重複電子郵件的操作。但是這對React來說太合理了。