Maison > Questions et réponses > le corps du texte
import React from "react"; import { useParams } from "react-router-dom"; import { useState, useEffect } from "react"; const SingleUser = () => { const [user, setUser] = useState([]); const { username } = useParams(); useEffect(() => { const getSingleUser = async () => { try { const res = await fetch( `https://api.chess.com/pub/player/${username}/stats` ); const data = await res.json(); const heroesArray = Object.values(data); setUser(heroesArray); console.log(heroesArray[0].last); } catch (error) { console.error(error); } }; getSingleUser(); }, []); return ( <section> <div> <h1>Rapid Chess</h1> <p>Current Rating: {user[0].last.rating}</p> <p>Best Rating: {user[0].best.rating} </p> <div> <p>Wins: {user[0].record.win} </p> <p>Losses: {user[0].record.loss} </p> <p>Draws: {user[0].record.draw} </p> </div> </div> </section> ); }; export default SingleUser;
Pour une raison quelconque, mon code ne s'affiche qu'une seule fois et lorsque j'actualise la page, je commence à recevoir des erreurs. Je pense que cela a quelque chose à voir avec useEffect mais je ne sais pas
TypeError : Impossible de lire la propriété non définie (lire « dernier »). Je reçois ces erreurs.
P粉4474950692024-02-18 15:16:59
Lorsque vous traitez les données de l'API, vous devez utiliser le chaînage facultatif car les données peuvent ou non être :
import React from "react"; import { useParams } from "react-router-dom"; import { useState, useEffect } from "react"; const SingleUser = () => { const [user, setUser] = useState([]); const { username } = useParams(); useEffect(() => { const getSingleUser = async () => { try { const res = await fetch( `https://api.chess.com/pub/player/${username}/stats` ); const data = await res.json(); const heroesArray = Object.values(data); setUser(heroesArray); console.log(heroesArray?.[0]?.last); } catch (error) { console.error(error); } }; getSingleUser(); }, []); return (); }; export default SingleUser; Rapid Chess
Current Rating: {user?.[0]?.last?.rating}
Best Rating: {user?.[0]?.best?.rating}
Wins: {user?.[0]?.record?.win}
Losses: {user?.[0]?.record?.loss}
Draws: {user?.[0]?.record?.draw}