2016-09-28 33 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)。希望它很快就会被接受。