Estoy recibiendo este error:
No capturado (en promesa) TypeError: no se pueden leer las propiedades de undefined (leyendo 'setState')
y este es mi codigo:
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 }Aquí está pasando una función anónima a la devolución de llamada axios.then .
axios.get("employee/list") .then(function(response) { this.setState({ employees: response.data, }); }); Esta función tiene su propio this que no tiene la propiedad setState . Para resolver este problema, debe enlazar this así:
axios.then( function (response) { this.setState({ employees: response.data }); }.bind(this) ); O use una función de flecha, que unirá el exterior this automáticamente
axios.then( (response) =>{ this.setState({ employees: response.data }); } );Esto se debe a que la devolución de llamada que pasa es una expresión de función , que tiene su propio enlace this .
Para solucionar este error puedes:
getEmployeeList = () => { axios .get("employee/list") .then((response) => { this.setState({ employees: response.data, }); }); };this en la variable self y llámelo en su lugar: getEmployeeList = () => { const self = this; axios .get("employee/list") .then(function (response) { self.setState({ employees: response.data, }); }); };