Je pense que c'est peut-être une question ridicule à poser, mais croyez-moi, je suis coincé pour trouver une réponse. En fait, j'essaie d'accéder à la valeur d'état mise à jour dans la fonction de classe ci-dessus la fonction de rendu, mais je n'obtiens pas de valeur mise à jour. lorsque je console la valeur dans la fonction de rendu, la valeur est mise à jour. Quelqu'un pourrait-il s'il vous plaît m'aider à accéder à la valeur mise à jour.
Merci
fetchAgents = e => { this.setState({ value: e.target.value }); }; fetchFilteredInventories = e => { axios .get(`/api/reports/agents/?branch=${this.state.value}`) .then(response => { this.setState({ agents: response.data }); }); };
lorsque j'essaie d'accéder à la valeur d'état mise à jour dans fetchFilteredInventories code > J'obtiens une valeur nulle. Quelqu'un pourrait-il m'aider à atteindre mon objectif
3 Réponses :
Essayez ceci
axios.get(`/api/reports/agents/?branch=${this.state.value}`).then(function(response) { this.setState({ agents: response.data }); }.bind(this));
setState est asynchrone. Lorsque vous console.log après setState, l'état n'est pas encore changé, il est en train de changer. Essayez ceci
this.setState({ value : e.target.value },()=>console.log(value));
Vous verrez que la valeur est mise à jour. setState autorise une fonction de rappel comme argument. Utilisez donc la fonction de rappel pour utiliser la valeur d'état mise à jour.
Lisez la documentation pour plus d'informations: https://reactjs.org/docs/state-and-lifecycle.html#using-state-correctly
Cela dépend de l'endroit où vous appelez votre fonction fetchFilteredInventories
.
Après une mise à jour d'état dans un composant React, certains hooks de cycle de vie sont appelés, tels que componentWillUpdate
, componentDidUpdate
. vous pouvez les lire dans la documentation React ici État et cycle de vie .
Assurez-vous que vous appelez votre fonction d'appel d'API au bon moment.
Si vous le pouvez, mettez votre code de composant complet ici pour obtenir de meilleures réponses.
Veuillez nous montrer votre code de composant complet. Nous pouvons donc trouver le problème.
fetchFilteredInventories est une fonction, pas un état.
agents
est l'objet d'état que vous recherchez.veuillez fournir le code du composant entier.
avez-vous essayé avec e.target.value au lieu de this.state.value
pouvez-vous montrer d'où vous appelez fetchedFilteredInventories?