Panduan Praktikal untuk Meningkatkan Prestasi Aplikasi Native React
mata utama
useNativeDriver
untuk menguruskan baki ini. InteractionManager
useCallback
animasi yang mengimbangi benang JS dan benang utama
Anime adalah tugas yang menuntut dalam mana -mana permohonan, dan React Native tidak terkecuali. React Native menggunakan dua benang utama: benang JS digunakan untuk melaksanakan kod JavaScript, dan benang utama bertanggungjawab terutamanya untuk memberikan antara muka pengguna dan bertindak balas kepada input pengguna. Animasi biasanya berjalan pada benang utama secara lalai. Walau bagaimanapun, beban kerja animasi yang berat pada benang utama boleh menyebabkan masalah prestasi seperti titisan bingkai.
Penyelesaian 1: Cuba gunakan usenativedriver
adalah harta animasi asli yang boleh digunakan apabila menghidupkan unsur -unsur dalam aplikasi Native React. Apabila pengguna menetapkan nilai harta ini kepada useNativeDriver
, aplikasi Native React akan menjadikan animasi pada benang utama. Walau bagaimanapun, jika benang utama dijangka sibuk dengan tugas -tugas lain, anda boleh memindahkan animasi ke thread JS dengan menetapkan true
. useNativeDriver: false
Penyelesaian 2: Gunakan InterActionManager
Dalam beberapa kes, kedua -dua benang JS dan benang utama akan sangat sibuk. Sebagai contoh, aplikasi mungkin mengambil data API, melaksanakan beberapa logik, dan menjadikannya pada UI. Dalam kes ini, benang JS sibuk mendapatkan data dan melaksanakan logik, sementara benang utama sibuk menunjukkan UI. Cuba untuk menjalankan animasi boleh menyebabkan titisan bingkai dan masalah prestasi apabila kedua -dua benang diduduki. Dalam kes ini, InteractionManager
boleh digunakan. Mulakan animasi terlebih dahulu. Selepas animasi selesai, React Native akan memanggil InteractionManager.runAfterInteractions
untuk melaksanakan kod JS. Kod JS kemudian akan memanggil API dan memaparkan data pada UI. Kaedah ini membantu mengelakkan beban benang JS yang melaksanakan kod dan animasi JS pada masa yang sama.
Elakkan pengubahsuaian semula yang tidak perlu
Mengelakkan penanaman semula yang tidak perlu dalam React Native adalah penting untuk mengekalkan prestasi yang optimum. Apabila aplikasi semula aplikasi, thread JS membuat fail bundle JS dan melewatinya melalui Jambatan Native React, dan kemudian menyerahkannya ke benang utama. Semakin banyak melantik permohonan itu, lebih banyak pas berlaku di antara benang JS dan benang utama, yang akan merendahkan prestasi permohonan.
penyelesaian 1: komponen memori
React.memo
adalah komponen pesanan yang lebih tinggi yang disediakan oleh React untuk mengoptimumkan komponen fungsi dengan mencegah penanaman semula yang tidak perlu. Apabila membungkus komponen fungsi dengan React.memo
, React akan ingat bahawa komponen, yang bermaksud ia akan membuat semula komponen hanya jika prop komponen berubah. Jika alat peraga antara penyewa tetap sama, React akan menggunakan semula hasil render sebelumnya, dengan itu mengelakkan kos untuk membuat semula komponen.
Penyelesaian 2: Gunakan fungsi usecallback dengan bijak
Apabila komponen induk menetapkan fungsi panggil balik untuk komponen anaknya, fungsi panggil balik juga dicipta semula apabila komponen induk semula, menghasilkan rujukan fungsi baru yang dikembalikan. Oleh itu, komponen kanak-kanak memperlakukannya sebagai perubahan dalam nilai fungsi panggil balik, menyebabkan ia membuat semula, walaupun React.memo
digunakan. Untuk mengurangkan ini, anda boleh menggunakan useCallback
untuk mengelakkan rujukan fungsi mencipta semula setiap komponen semula komponen induk.
Penyelesaian 3: Cuba elakkan mengemas kini status tempatan dengan status redux
Penyelesaian 4: Menghafal hasil fungsi
Penyelesaian 5: Elakkan fungsi inline
Imej yang dioptimumkan
Mengoptimumkan imej dapat meningkatkan prestasi aplikasi.
Penyelesaian 1: Gunakan ikon dan imej SVG
Penyelesaian 2: Gunakan imej Webp untuk mendapatkan kualiti imej lossless
Penyelesaian 3: Imej cache untuk mempercepatkan rendering
Gunakan pakej npm stabil
Gunakan stylesheets ke komponen
Gunakan flatlist untuk meningkatkan prestasi
Elakkan kebocoran memori
penyelesaian 1: log keluar pemasa/pendengar/langganan
Penyelesaian 2: Elakkan penggunaan pembolehubah global yang tidak perlu
Penyelesaian 3: Rujukan Objek Kitar Semula
React debugging asli dan alat pemantauan prestasi
1
23
45.
Padam Log Konsolpenyelesaian 1: Gunakan pembolehubah _dev_global
Gunakan Babel-Plugin-Transform-Remove-Console
Kesimpulan
Atas ialah kandungan terperinci Tips dan Trik Prestasi Asal React Essential. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!