Apollo mutate回调中的不变违规设置状态

时间:2017-03-25 02:00:16

标签: reactjs react-apollo

当我尝试在catch子句中使用this.setState时,我从事件处理程序调用mutate函数并获取Invariant Violation错误。

java.util.ArrayDeque

1 个答案:

答案 0 :(得分:0)

我认为问题在于你错过了setState函数中的开始和结束括号。

我会这样写:

class ClassName extends React.Component {
  constructor(props) {
      super(props);

      this.state = {
        error,
        ...
      };
      
      this.saveToken = this.saveToken.bind(this);
      this.setErrors = this.setErrors.bind(this)
    }

    ...

    setErrors(error) {
      this.setState({error: error.graphQLErrors}); // should work with brackets
    }
    
  handleSubmit(event) {
    event.preventDefault();
    let { email, password } = this.state;
    let { history } = this.props;
    let clientKey = getClientKey();
    this.props.mutate({
        variables: {
          email,
          password,
          clientKey
        }
      })
      .then(this.saveToken)
      .catch(this.setErrors)
  }

}