Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'setState')

我收到此错误:

Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'setState')

这是我的代码:

class Table extends Component {
    constructor (props) {
        super(props);
        this.state = {
            employees: [],
        }
    }
    componentDidMount() {
        this.getEmployeeList();
    }
    getEmployeeList = () => {
        axios.get("employee/list")
        .then(function(response) {

            this.setState({
                employees: response.data,
            });

        });
        console.log(this.state.employees)
    }

    // Remaining codes

}
stack overflow Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'setState')
原文答案
author avatar

接受的答案

这是因为您传入的回调是一个 function expression ,它有自己的 this 绑定。

要解决此错误,您可以:

  1. 使用 arrow functions

    
    getEmployeeList = () => {
    axios
    .get("employee/list")
    .then((response) => {
      this.setState({
        employees: response.data,
      });
    });
    };

2. 将  `this`  保存到  `self`  变量,然后调用它:

getEmployeeList = () => {
const self = this;
axios
.get("employee/list")
.then(function (response) {
self.setState({
employees: response.data,
});
});
};


答案:

作者头像

在这里,您将一个匿名函数传递给 axios.then 回调。

axios.get("employee/list")
.then(function(response) {

    this.setState({
        employees: response.data,
    });

});

这个函数有它自己的 this 没有 setState 属性。要解决此问题,您必须像这样绑定 this

axios.then(
  function (response) {
    this.setState({
      employees: response.data
    });
  }.bind(this)
);

或者使用箭头函数,它会自动绑定外部 this

axios.then(
 (response) =>{

    this.setState({
      employees: response.data
    });
  }
);
作者头像

大多数 typeError 类型的问题是由于拼写错误,特别是数据,重新检查你的拼写。

相关问题