Maison  >  Questions et réponses  >  le corps du texte

Pour une raison quelconque, mon code ne s'affiche qu'une seule fois et lorsque j'actualise la page, je commence à recevoir des erreurs

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粉986028039P粉986028039267 Il y a quelques jours299

répondre à tous(1)je répondrai

  • P粉447495069

    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 (
        

    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}

    ); }; export default SingleUser;

    répondre
    0
  • Annulerrépondre