在操作创建者(假设你使用反应-形实转换)
const submit = (url, data) => dispatch => {
dispatch({ type: 'submit-start' });
return new Promise((res, rej) =>
fetch(/*do some stuff*/)
.then(res => {
if (res.status !== 200) {
dispatch({ type: 'submit-err' })
//the object which is rejected here
//configures the errors displayed in the form
//in best case your server delivers an appropriate
//response
rej({ _error: 'Validation Failed', age: 'too young' });
} else {
dispatch({ type: 'submit-success' });
res(res.json())
}
})
);
}
export { submit };
和在组件:如果从动作创建者返回的无极被拒绝
submit (data) {
return this.props.submit(<url>, data)
}
render() {
const { handleSubmit } = this.props;
return <form onSubmit={handleSubmit(submit)}>…</form>
}
,错误消息被展示。
Redux-Thunk返回以dispatch调用的函数的返回值作为参数,在本例中为promise。
对于重写表单提交验证,提交函数必须返回一个可以解决或拒绝的承诺。
docs
谢谢,这几乎是我已经做的。我想要做的是将任意回调传递给在成功解析获取承诺后调用的组件。我不能直接链接到获取诺言,因为我想捕获其他错误,但不是SubmissionErrors,并且解决这个问题很麻烦。 – Dan