0
votes

Réglage de la variable avec le crochet USESTE de ReactJS ne fonctionne pas

J'essaie de définir une variable avec usestate code> après un appel API, mais cela ne fonctionne pas. Débogage par réactotron, il fait appel à l'API, mais il ne définit pas la variable.

export default function Forecast({ navigation }) {
  const [cityData, setCityData] = useState([]);
  const idNavigation = navigation.state.params.cityData.woeid;

  async function loadCityData(cityID) {
    const response = await api.get(`${cityID}`);
    setCityData([response]);
    console.tron.log(cityData);
  }

  useEffect(() => {
    if (idNavigation) {
      loadCityData(idNavigation);
    }
    return () => {};
    // eslint-disable-next-line react-hooks/exhaustive-deps
  }, [idNavigation]);

  return <Text>Forecast Weather</Text>;
}

Forecast.propTypes = {
  navigation: PropTypes.shape({
    state: PropTypes.object,
  }).isRequired,
};


5 commentaires

Obtenez-vous une erreur dans la console ? Assurez-vous que vous obtenez des données dans réponse .


Le code a l'air bien. Pourriez-vous vérifier si réponse en provenance de l'API a des données?


Ouais peut-être que c'est la demande HTTP que vous faites. S'il vous plaît vérifier la console.


La réponse son ok. Le problème c'est l'ensemble de l'ensemble, il définit la valeur de NT.


Erreur de journal: Erreur de type PROMÊTEMANDÉE POSSIBLE DONNÉE, TYPE ERREUR: Undefined n'est pas un objet (évaluer les données de réponse)


3 Réponses :


1
votes

Réglage de l'état de réaction est ASYNC pour la plupart et les modifications apportées à l'état pourraient ne pas être visibles si vous essayez de consoler. La façon recommandée de le faire avec des crochets, c'est de vérifier l'état mis à jour dans useeffect : xxx


5 commentaires

N'est-ce pas exactement ce que l'utilisateur fait aussi?


Ce que l'utilisateur effectue est de définir les données, puis d'appeler la console.log immédiatement, ce qui renvoie l'ancien état.


J'essaie mais je n'ai pas travaillé. Je ne comprends pas. Dans le code, l'attente Whecks fonctionne


Erreur de journal: Erreur de type PROMÊTEMANDÉE POSSIBLE DONNÉE, TYPE ERREUR: Undefined n'est pas un objet (évaluer les données de réponse)


C'est un problème avec l'API et devrait probablement être posé dans une question distincte.



0
votes

Umm, je pense que c'est peut-être un problème de réactotron ou de l'API. Essayez simplement xxx

si votre plobrem est venu de Réactron, vous pouvez voir la réponse de API.


1 commentaires

Vous avez besoin de réagir v16.8 pour utiliser des crochets. "React V16.7: Non, ce n'est pas celui avec des crochets" ReactJs.org/blog/2018/12/19/react-v-16-7.html



0
votes

parce que l'usestate est une fonction asynchrone. xxx pré>

Voir cet exemple em> p>

p>

<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.7.0-alpha.2/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.7.0-alpha.2/umd/react-dom.production.min.js"></script>
<div id="root"></div>


0 commentaires