This.setstate在回调中卸载

时间:2017-05-24 05:57:40

标签: reactjs meteor

这里真的很困惑。我更新到React Router 4,它需要进行一些更改,现在当我的注册表单在服务器端出错时,它会返回控制台错误:

  

setState(...):只能更新已安装或安装的组件。这个   通常意味着您在未安装的组件上调用了setState()。这是   无操作。请检查RegisterForm组件的代码。

如果我在this.setState({ errors: {createUserError: "Test error" }});函数之外运行Accounts.createUser,我真的很困惑,我没有得到安慰错误。

任何建议????

handleSubmit(event) {
    event.preventDefault();

    this.setState({errors: {} }, function() {
      var data = {
        email: this.state.email,
        password: this.state.password
      };

        Accounts.createUser(data, (error) => {   // This arrow function preserves this
        if(error) {
          this.setState({ errors: {createUserError: error.reason }});
        }
      });
    });
  }

1 个答案:

答案 0 :(得分:1)

我认为在调用第二个setState之前卸载组件时可能会发生这种情况。也许Accounts.createUser()会触发路由器导航或其他卸载组件的东西。