在访存中使用setState。错误:警告:无法在已卸载的组件上调用setState(或forceUpdate)

时间:2018-06-29 06:19:01

标签: javascript reactjs

在此处完成错误

enter image description here

fetch('http://localhost:3000/signin', {
    method: 'post',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({
      email: this.state.emailInput,
      password: this.state.passwordInput,
    }),
  })
    .then(response => response.json())
    .then((data) => {
      if (data === 'Success!') {
        this.setState({ route: '/' }, () => {
        document.getElementById('sign-in-button').click();
        signIn();
      });
      }
    });

我90%肯定会发生错误,因为我从服务器获取时是setState-ing。

我正在使用“ route”状态从React Router v4动态设置我的NavLink。

1 个答案:

答案 0 :(得分:0)

如果您的函数使用render方法,它将给出该错误。将获取功能移至lifecycle method

componentDidMount(){
    fetch('http://localhost:3000/signin', {
    method: 'post',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({
          email: this.state.emailInput,
          password: this.state.passwordInput,
        }),
    })
    .then(response => response.json())
    .then((data) => {
      if (data === 'Success!') {
        this.setState({ route: '/' }, () => {
        document.getElementById('sign-in-button').click();
        signIn();
      });
      }
    });
}