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,
};
3 Réponses :
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 code>:
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.
Umm, je pense que c'est peut-être un problème de réactotron ou de l'API.
Essayez simplement si votre plobrem est venu de Réactron, vous pouvez voir la réponse de API. P> P>
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
parce que l'usestate est une fonction asynchrone. 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>
Obtenez-vous une erreur dans la console
code>? Assurez-vous que vous obtenez des données dans
réponse code>.
Le code a l'air bien. Pourriez-vous vérifier si
réponse code> 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)