2016-09-28 42 views
1

從onSubmit [1]的文檔中,似乎爲了充分利用redux-form(例如,更新字段包含錯誤詳細信息,成功重定向),應該返回一個承諾。如何在未提交承諾的操作中使用onSubmit?

如果使用redux-thunk或類似的方法,並返回來自動作創建者的承諾,這沒關係。

但是,我的應用程序中的異步操作沒有返回promise - 它們使用中間件來處理API請求。像這裏的redux文檔[2]中的callAPIMiddleware函數一樣。

當一個表單提交,我想觸發SAVE動作,讓服務器做的事情,並處理通過監聽由中間件自動觸發的SAVE_SUCCESSSAVE_ERROR行動的響應。我的表單會顯示錯誤,在成功後執行某些操作等。

有沒有辦法做到這一點,還是我只需要返回來自我的動作創建者的承諾?

[1] http://redux-form.com/6.0.5/docs/api/ReduxForm.md

[2] http://redux.js.org/docs/recipes/ReducingBoilerplate.html

回答

0

我面臨同樣的問題。我使用Redux-Observable來包含我在RxJS史詩中的所有副作用。這意味着我的行動創造者也不會回覆任何承諾。

有一種解決方法,包括返回一個永遠不會解析的空Promise。這將使表單開始提交過程。完成後,您可以使用操作創建者分配stopSubmit操作。這最後一個動作可以讓你定義表單錯誤等。

但是,目前在GitHub中爲此打開了一個錯誤(https://github.com/erikras/redux-form/issues/2591)。有一個請求來解決這個錯誤(https://github.com/erikras/redux-form/pull/2731)。希望它很快就會被接受。