ReactJS从服务器接收表单错误

时间:2016-10-20 17:49:59

标签: reactjs error-handling

以下是我在React中的注册功能。如何呈现从后端收到的错误?我试图将一个this.setResponse放入catch部分......但是没有用。我知道componentWillReceiveProps应该处理更新,但这是来自服务(也在下面)而不是来自父组件的更新。

如果我打印错误,我可以看到有错误的字典,但我看不到如何将它们传递给表单或字段进行渲染。

signup(evt) {
    evt.preventDefault();
    ...
      Auth.signup(dict)
        .catch(function(err) {
            alert("There's an error signing up");
            console.log(err.response);
      });
},

Auth服务的定义如下:

signup(dict) {
    console.log(dict);
    return this.handleAuth(when(request({
        url: UserConstants.SIGNUP_URL,
        method: 'POST',
        type: 'json',
        data: dict
    })));
}

我希望通过以下内容向字段发送错误:

<UserNameField
    ref="username"
    responseErrors={this.responseErrors}
/>

1 个答案:

答案 0 :(得分:1)

假设UserNameField与auth回调在同一个组件中,您可以设置触发重新渲染的状态,并将值作为道具传递给UserNameField

signup(evt) {
    evt.preventDefault();
    ...
      Auth.signup(dict)
        .catch((err) => {
            alert("There's an error signing up");
            console.log(err.response);
            this.setState({error: err});
      });
},

<UserNameField
    ref="username"
    responseErrors={this.responseErrors}
    error={this.state.error}
/>

这与.bind(this)相同。