Rumah > Soal Jawab > teks badan
P粉0345716232023-08-15 15:59:32
Kesan sampingan dalam gelung: Cara anda menggunakan setTimeout dan setIndex dalam useEffect boleh menyebabkan tingkah laku yang tidak dijangka. useEffect dilaksanakan selepas setiap pemaparan, dan menggunakan keadaan indeks secara langsung dalam panggilan balik setTimeout boleh menyebabkan masalah kerana penutupan menangkap nilai keadaan apabila panggilan balik dibuat.
Mengakses elemen tatasusunan: Anda cuba mengakses elemen tatasusunan pengguna menggunakan indeks, tetapi disebabkan sifat useEffect dan kelewatan tak segerak, ia mungkin melebihi skop tatasusunan.
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]);