Répétez useEffect des noms dans le tableau
P粉775788723
P粉775788723 2023-08-14 18:14:44
0
1
394
<p>J'ai trouvé cet exercice sur ce site Web ; je le teste car j'apprends également des hooks dans React. </p> <p>Je ne comprends pas pourquoi l'exécution de useEffect s'arrête lorsque vous entrez un nom identique à celui déjà présent dans le tableau. </p> <p>Ne devrait-il pas ignorer les noms en double et passer au suivant ? Ou est-ce que je fais quelque chose de mal ? </p> <pre class="brush:php;toolbar:false;">laisser les utilisateurs = ['Oliver', 'Thomas', 'George', 'George', 'William'] exporter la fonction par défaut App() { const [index, setIndex] = useState(0); console.log('RENDER'); useEffect(() => { setTimeout(() => setIndex(index => index + 1), 1000) console.log('Bonjour' + utilisateurs[index]); console.log('Side Effect RUNS!'); if (index === users.length - 1) { retour } }, [utilisateurs[index]]) }</pré> <p><br /></p>
P粉775788723
P粉775788723

répondre à tous(1)
P粉034571623

Effets secondaires dans les boucles : la façon dont vous utilisez setTimeout et setIndex dans useEffect peut provoquer un comportement inattendu. useEffect est exécuté après chaque rendu, et l'utilisation de l'état d'index directement dans le rappel setTimeout peut provoquer des problèmes car la fermeture capture la valeur de l'état lors de la création du rappel.

Accès aux éléments du tableau : vous essayez d'accéder à un élément du tableau des utilisateurs à l'aide d'un index, mais en raison de la nature asynchrone de useEffect et du délai, cela peut dépasser la portée du tableau.

const [index, setIndex] = useState(0);

  useEffect(() => {
    console.log('RENDER');
    console.log('副作用运行!');
    
    if (index >= users.length) {
      return;
    }

    const timeoutId = setTimeout(() => {
      console.log('你好 ' + users[index]);
      setIndex(index + 1);
    }, 1000);

    return () => clearTimeout (timeoutId);
  }, [index]);
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!