0
votes

Réagissant l'état de réglage d'une réponse Axios

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');
          });

    }


0 commentaires

4 Réponses :


0
votes

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');
      });
}


0 commentaires

1
votes

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');
          });

    }


0 commentaires

0
votes

Dans la fonction de rappel Ce serait indéfini (c'est ainsi que ceci dans JS fonctionne). Si vous souhaitez une solution facile, utilisez simplement des fonctions de flèche xxx

en savoir plus sur Ceci https://hakernoon.com/javascript-es4-Arrow-Arrow-and-lexical-Cet-f2a3e2A5E8C4


0 commentaires

1
votes

Vous pouvez également utiliser la syntaxe ASYNC / AWAIT et transmettre des données comme argument pour une plus grande flexibilité / réutilisabilité. Essayez: XXX


0 commentaires