Maison > Questions et réponses > le corps du texte
P粉0345716232023-08-15 15:59:32
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]);