Je tente de mettre à jour l'état avec des informations renvoyées d'un appel Axios Post. Je reçois une erreur disant typeError: impossible de lire la propriété 'Statetate' de indéfini code>. Il me semble que ce code> n'est pas utilisable à partir d'une réponse de l'API. submitData= () => {
axios.post("url", this.props.data)
.then(function (result) {
console.log(result,'success');
this.setState({
...this.state,
id: result.data.id
})
})
.catch(function (err) {
console.log(err, 'fail');
});
}
4 Réponses :
Essayez de faire le .Chen code> une fonction anonyme pour lier ceci code>. submitData= () => {
axios.post("url", this.props.data)
.then((result) => {
console.log(result,'success');
this.setState({
...this.state,
id: result.data.id
})
})
.catch((err) => {
console.log(err, 'fail');
});
}
Utilisez la fonction de flèche dans votre rappel comme ceci:
submitData= () => {
axios.post("url", this.props.data)
.then((result) => {
console.log(result,'success');
this.setState({
...this.state,
id: result.data.id
})
})
.catch(function (err) {
console.log(err, 'fail');
});
}
Dans la fonction de rappel en savoir plus sur Ce code> serait indéfini (c'est ainsi que ceci code> dans JS fonctionne).
Si vous souhaitez une solution facile, utilisez simplement des fonctions de flèche Ceci code> https://hakernoon.com/javascript-es4-Arrow-Arrow-and-lexical-Cet-f2a3e2A5E8C4 P> p>
Vous pouvez également utiliser la syntaxe ASYNC / AWAIT et transmettre des données comme argument pour une plus grande flexibilité / réutilisabilité. Essayez: