Rumah > Soal Jawab > teks badan
P粉1830770972023-08-19 11:59:00
Anda hanya boleh menukar baris ini dalam fungsi addMoreData
setLoadedData((prev) => [...prev, ...newData]);
untuk
setLoadedData([...loadedData, ...newData]);
Ini akan menyebabkan keadaan mengemas kini berdasarkan nilai semasa semasa pemaparan, sejak kali kedua useEffect
运行时组件尚未重新渲染,所以第一个组件所做的更改尚未反映出来,因此loadedData
ia belum dikemas kini lagi.
Apabila anda mengemas kini menggunakan borang berfungsi, prev
ialah nilai langsung keadaan, adalah perkara biasa untuk anda menghadapi perkara ini apabila menggunakan mod ketat dalam pembangunan.
Akhirnya, hapuskan isLoading
, ia tidak akan membantu menyelesaikan masalah.
Nota: Menggunakan bentuk fungsi setState adalah lebih disyorkan apabila mod ketat didayakan, tetapi tidak disyorkan dalam useEffect
kerana cangkuk ini akan berjalan dua kali apabila komponen dipasang.
Selain itu, apabila anda memasukkan data.length
dan loadedData.length
dalam tatasusunan kebergantungan anda, ini akan menyebabkan data.length
和loadedData.length
时,这将使useEffect
tercetus apabila salah satu nilai tersebut berubah.