reduxフォームを使用してユーザーを登録しようとしています。すべての同期検証が機能していますが、ユーザーがフォームを送信して電子メールがすでに登録されている場合に問題が発生します。エラーは次のように、私がアクセスできるようにしていた返されreactxでの非同期アクション後のエラーの表示
export function registerUser(details, callback) {
return(dispatch) =>{
dispatch(startRegisteing());
axios.post(URL, {
"email": details['email'],
"name": details['username'],
"password": details['password']
}).then((data) =>{
callback();
dispatch(RegistrationSuccessfull(data))
}).catch((error) => {
console.log('error', error.response.data.message);
//throw new SubmissionError(error.response.data.message);
dispatch(RegistrationFailed(error.response.data.message))
})
}
}
それのための減速だけで状態を更新
export function RegistrationFailed(error) {
return{
type: types.REGISTRATION_ERROR,
payload:error
}
}
RegistrationFailed
アクションが
switch (action.type){
case types.REGISTRATION_SUCCESSFUL:
console.log("nanana too ", action);
return{
...state, isRegisteringUser:false,
data:action.data
};
case types.REGISTRATION_ERROR:
console.log("current state", state);
return{
...state, error: action.payload
}
}
私の質問は、私がどのようにできていますこのエラーをフォームにユーザに提示することができます
<form onSubmit={handleSubmit(this.onFormSubmit.bind(this))}>
<Field
name="username"
lable="Username"
type="text"
component={ this.renderField }
/>
<Field
name="email"
type="email"
lable="Email"
component={ this.renderField }
/>
{// I want to present the error here }
{error && <strong>{error}</strong>}
<Field
name="password"
type="password"
lable="Password"
component={ this.renderField }
/>
<Field
name="confirm_password"
type="password"
lable="Confirm Password"
component={ this.renderField }
/>
<button type="submit" className="btn btn-primary" disabled={submitting}>Register</button>
<Link className="btn btn-danger" to="/login">Cancel</Link>
</form>
Iが反応形式のドキュメントとしてthrow new SubmissionError(error.response.data.message);
を試してみましたと言うが、そのはUnhandled rejection SubmissionError: Submit Validation Failed
。なお、エラーを上げる:反応-Reduxの初心者をしています。どんな助けにもなります
回答ありがとうございますが、私はredux-formを使用しているので、フォームフィールドは 'error'状態が変更されると再レンダリングされません。 {} {console.log( "cheki ..."、error)} {エラー&& {エラー}} 'ログはフォームが送信される前に表示されますが、一度送信されるとログは印刷されません状態が変わると、フィールドは再レンダリングされません。なぜ、このように動作しますか? –
コンポーネントのコードを投稿できますか?それのためのhttp://codesandbox.ioはさらに良いだろう。 – palsrealm
ここではhttps://codesandbox.io/s/1ozn3z9lrj –