Bagaimanakah saya mengetahui daripada surih tindanan komponen dan pengendali peristiwa atau cangkuk kitaran hayat tertentu yang bertanggungjawab terhadap pelanggaran peraturan ?
Dalam surih tindanan yang disediakan, komponen TextLayer diserlahkan sebagai sumber pelanggaran. Walau bagaimanapun, tidak jelas pengendali peristiwa atau cangkuk kitaran hayat dalam komponen itu yang menyebabkan isu tersebut.
Untuk mengasingkan lagi masalah, anda boleh menggunakan kata kunci penyahpepijat pada permulaan kaedah pemaparan komponen. Ini akan menjeda pelaksanaan dan membolehkan anda memeriksa keadaan komponen dan prop dalam konsol penyemak imbas. Dari situ, anda boleh melangkah melalui kod secara manual dan mengenal pasti kemas kini keadaan tertentu yang mencetuskan amaran.
Nah, bagaimana untuk menyelesaikan masalah itu sendiri, kerana kod saya telah ditulis dengan mengambil kira perangkap ini dan sudah pun cuba menghalangnya, tetapi beberapa komponen asas masih menghasilkan amaran.
Berdasarkan kod yang diberikan, nampaknya beberapa komponen lain berkemungkinan menyebabkan amaran dengan mengemas kini keadaan selepas dinyahlekap. Untuk menangani isu ini, anda boleh:
1. Batalkan Fungsi Pendikit:
Kod anda cuba membatalkan fungsi pendikit dalam componentWillUnmount, tetapi pelaksanaan nampaknya tidak berfungsi dengan betul. Cuba gunakan coretan berikut untuk membatalkan fungsi pendikit dengan betul:
componentWillUnmount = () => { window.removeEventListener("resize", this.setDivSizeThrottleable!); this.setDivSizeThrottleable!.cancel(); this.setDivSizeThrottleable = undefined; };
2. Semak untuk Memasang Komponen Sebelum Mengemas kini Keadaan:
Dalam onDocumentComplete, anda hanya perlu mengemas kini keadaan jika komponen masih dipasang. Tambah cek untuk isComponentMounted sebelum memanggil setState:
onDocumentComplete = () => { if (this.isComponentMounted) { try { this.setState({ hidden: false }); this.setDivSizeThrottleable(); } catch (caughtError) { console.warn({ caughtError }); } } };
3. Semak Komponen Induk:
Jika isu berterusan, anda mungkin perlu menyemak komponen induk yang boleh mencetuskan kemas kini keadaan selepas komponen Buku dinyahlekap.
4. Gunakan useEffect Cleanup:
Dalam cangkuk React, anda boleh menggunakan fungsi useEffect cleanup untuk melakukan tindakan apabila komponen dinyahlekap. Ini boleh digunakan untuk membatalkan langganan atau operasi tak segerak yang mungkin menyebabkan kemas kini keadaan selepas dinyahlekap.
Pertimbangan Tambahan:
Atas ialah kandungan terperinci Bagaimana untuk Nyahpepijat dan Membetulkan Pelanggaran Kemas Kini Keadaan React Selepas Komponen Nyahlekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!