Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

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

I am getting this error:

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

and this is my code:

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
    
}
about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Here you are passing an anonymous function to the axios.then callback.

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

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

});

This function has it's own this that has no setState property on it. To solve this issue, you have to either bind this like so:

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

Or use an arrow function, which will bind the outer this automatically

axios.then(
 (response) =>{

    this.setState({
      employees: response.data
    });
  }
);
about 4 years ago · Juan Pablo Isaza Report

0

This is because the callback you pass in is a function expression, which has its own this binding.

To solve this error you can:

  1. Use arrow functions:
getEmployeeList = () => {
  axios
    .get("employee/list")
    .then((response) => {
      this.setState({
        employees: response.data,
      });
    });
};
  1. Save this to self variable, and call it instead:
getEmployeeList = () => {
  const self = this;
  axios
    .get("employee/list")
    .then(function (response) {
      self.setState({
        employees: response.data,
      });
    });
};
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!