Rumah >hujung hadapan web >tutorial js >Penaakulan tentang penggunaanKesan penggunaan yang salah
Kail yang paling salah digunakan dalam React ialah, pastinya, useEffect. Kami mempunyai pelbagai sebab untuk ini, bukan hanya satu. Mari kita terokai setiap satu daripadanya, dari sudut pandangan saya.
Jadi salah satu sebab yang saya rasa lebih memberi impak ialah, pada era pra-cangkuk, kami menggunakan kelas. Bagi mereka yang mula menggunakan React dalam tempoh ini, ia digunakan untuk menggunakan kaedah kitaran hayat dan ini.state. Saya menulis sedikit tentang perkara ini dalam entri ini. Ada orang yang merindui zaman kelas emas yang lama, dan menghargai kesederhanaan dan keterusterangannya. Ia adalah model yang sangat sesuai dengan pengetahuan umum pengaturcara secara umum, yang mempelajari pengaturcaraan berorientasikan objek dan penting, dan struktur mental hanya bersambung dengan model itu.
Kemudian mereka menambah cangkuk.
Masalahnya ialah anjakan paradigma yang berlaku. Pengaturcara secara amnya sangat biasa dengan paradigma imperatif dan berorientasikan objek, ia biasanya diajar di kolej dan kursus, terutamanya yang penting, mengikut aliran pemikiran biasa manusia.
Apabila anda beralih kepada paradigma yang berbeza seperti pengaturcaraan berfungsi, anda menghadapi cara berfikir yang terbalik, yang tidak begitu hampir dengan yang biasa. "Pembalikan" ini menjadikannya lebih sukar untuk difahami.
Pengaturcaraan reaktif mengalami masalah yang sama. Ia adalah perubahan daripada cara aktif kepada cara pasif dalam melakukan pengaturcaraan. Kami melihatnya dengan penggunaan useEffect yang salah.
Kebanyakan "RALAT" adalah penyegerakan keadaan. Jadi, dev menggunakan useEffect untuk menjejaki beberapa keadaan atau prop dan berdasarkan beberapa logik, untuk menukar keadaan. Kes ini mendedahkan cara pemikiran bertentangan yang kita perlukan di sini.
Dalam OOP dan pengaturcaraan imperatif, anda aktif, melakukan perubahan dan logik secara proaktif. Kereaktifan adalah berdasarkan sebaliknya, anda bertindak balas terhadap peluang dan mengisytiharkan pengiraan yang anda mahu sistem lakukan apabila keadaan berubah.
Bagi kebanyakan pengguna, untuk secara aktif menetapkan keadaan baharu pada useEffect ialah cara langsung, keadaan berubah, jadi anda perlu menjejaki perubahan secara manual dan mengemas kini keadaan lain dengannya. Dokumen mengatakan ia TIDAK disyorkan, tetapi tiada sebab yang jelas untuk ini.
Mendapatkan dalam React ialah cara yang disyorkan bukan sahaja untuk sebab prestasi, tetapi untuk konseptual. React ialah mesin terbitan, dan hasilnya, pada akhirnya, ialah terbitan UI. Anda tidak perlu mengendalikan peralihan dan pengiraan semula keadaan ini secara aktif, ia berlaku begitu sahaja, berdasarkan kod perisytiharan yang anda tulis.
Dokumen React tidak menerangkan perkara ini dengan baik, selepas kait, pasukan teras React dan pencipta kandungan tidak membuat ceramah atau kursus yang menerangkan konsep ini.
React nampaknya mempunyai "kekeliruan konsep", peralihan kepada cangkuk adalah contoh yang paling kuat, tetapi bukan satu-satunya. Terdapat satu perbezaan besar pada penggunaan cangkuk, ia berdasarkan kereaktifan, dan walaupun pasukan teras React bergurau tentang kereaktifan, keputusan mereka untuk beralih kepadanya.
Komponen berfungsi sesuai untuknya. Setiap pemaparan semula memanggil sekali lagi fungsi, dan segala-galanya di dalam mendapat keadaan dan prop versi semasa, jadi, semua yang dicipta di dalam berkelakuan seperti terbitan. Pulangan, JSX, ialah terbitan UI.
Tetapi React bukanlah pelaksanaan pengaturcaraan dan kereaktifan berfungsi yang sempurna dan tulen. Ia mengambil konsep dan idea sebagai inspirasi dan menggabungkan mereka mencipta model mereka sendiri, tetapi terasnya ada, bagaimanapun.
Dan ini perlu jelas. Walaupun tanpa menjadi contoh kereaktifan, ia menggunakan konsep mereka, dan mengetahui corak yang lebih mendalam memudahkan pembangun untuk berfikir dan mencipta penyelesaian dengan primitif tersebut. Itulah sebabnya saya menulis siri "Reactivity in React" ini.
Bukan hanya katakan kepada pengguna, "jangan segerakkan keadaan pada useEffect, ini buruk", tetapi terangkan sebab ia buruk dan cara berfikir dengan cara yang "keadaan penyegerakan" malah merupakan penyelesaian pertama yang difikirkan.
Punca ini adalah salah satu yang bertambah baik, terutamanya dalam React 19. Derivasi Async adalah salah satu punca untuk menggunakan useEffect, tetapi kini kita perlu menggunakan primitif, yang mengisi jurang ini dalam beberapa cara.
Sudah tentu, kami masih mempunyai beberapa titik lemah dalam primitif, seperti kes untuk terbitan dinamik, dan kes lain, tetapi semakin banyak React mengalihkan lebih banyak kesan sampingan daripada medan cangkuk, seperti kes panggilan balik ref ini.
Dan kami sentiasa mengharapkan berita pada masa hadapan. Saya menjemput semua orang untuk membaca semua siaran Reaktiviti lain dalam React dan membawa kes dan soalan tertentu, kita boleh meneroka dan mencari lebih banyak penyelesaian kepada masalah biasa ini dengan kereaktifan.
Atas ialah kandungan terperinci Penaakulan tentang penggunaanKesan penggunaan yang salah. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!