在操作創建者(假設你使用反應-形實轉換)
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