如何使用redux-form和Fetch API进行服务器端验证?文档中提供了“Submit Validation”演示,其中说服务器端验证的推荐方法是从onSubmit函数返回一个promise . 但是我应该把这个承诺放在哪里?据我所知,onSubmit函数应该是我的动作 .
<form onSubmit={this.props.addWidget}>...
this.props.addWidget实际上是我的行动,如下所示 .
import fetch from 'isomorphic-fetch';
...
function fetchAddWidget(widget, workspace) {
return dispatch => {
dispatch(requestAddWidget(widget, workspace));
return fetch.post(`/service/workspace/${workspace}/widget`, widget)
.then(parseJSON)
.then(json => {
dispatch(successAddWidget(json, workspace));
DataManager.handleSubscribes(json);
})
.catch(error => popupErrorMessages(error));
}
}
export function addWidget(data, workspace) {
return (dispatch, getState) => {
return dispatch(fetchAddWidget(data, workspace));
}
}
如您所见,我使用fetch API . 我期望fetch将返回promise并且redux-form将捕获它但是这不起作用 . 如何使它与example的承诺一起工作?
同样从演示中我无法理解this.props.handleSubmit函数应该提供什么 . 对我来说,演示不解释这一部分 .
2 回答
这是我在http://erikras.github.io/redux-form/#/examples/submit-validation上根据示例使用fetch的看法 .
详情见下面的评论;抱歉代码块需要一点滚动才能读取:/
components / submitValidation.js
../redux/modules/submission.js
如果我错过了某些内容/误解等,请填写评论,我会修改:)
原来,there are undocumented property
returnRejectedSubmitPromise
必须设置为true .