Saya cuba menstrim data daripada api, tetapi semasa pemaparan, useEffect dipanggil beberapa kali, di mana semasa memuatkan halaman awal, semuanya berfungsi dengan baik kecuali dipanggil beberapa kali, tetapi apabila saya menyegarkan penyemak imbas Pada halaman dalam , perkara yang sama berlaku, tetapi teamData
juga ditetapkan kepada batal selepas dimuatkan.
const router = useRouter(); const { id } = router.query; const [teamData, setTeamData] = useState(null); const [loading, setLoading] = useState(true); useEffect(() => { GetTeamData(id).then((value) => { setTeamData(value); setLoading(false); console.log("Got Value") }) }, [id])
Keadaan hanya dirujuk dalam kod yang selebihnya, tetapi tidak pernah ditetapkan lagi selepas coretan ini. Bagaimanakah saya boleh membuat React/Next stop tetapan semula teamData
kepada null, dan sebagai bonus, bagaimanakah saya boleh membuatnya hanya memanggil useEffect sekali?
useEffect mempunyai id sebagai kebergantungan, jadi saya rasa nilai id berubah beberapa kali, menyebabkan komponen itu dipaparkan semula. Walau bagaimanapun, saya mengesyorkan anda berkongsi maklumat lanjut kerana coretan ini tidak banyak dipaparkan.
Mengapa tidak menggunakan prop sisi pelayan? Lihat contoh di bawah.
Ada dua sebab mengapa kesan anda tercetus beberapa kali.
Parameter pertanyaan penghala halaman Next.js tidak ditentukan semasa pemaparan awal - https://nextjs.org/docs/pages/api-reference/functions/use-router#router-object
React 18 Nyahpasang dan pasang semula komponen dalam mod pembangunan apabila menggunakan mod ketat - https://react.dev/blog/2022/03/08/react-18-upgrade-guide#updates-to-strict-mod
Sila lihat jika menulis semula kesan anda seperti berikut menyelesaikan masalah anda.