Apakah Anda ingin meminta fitur atau melaporkan bug ?
tidak ada/bug
Apa perilaku saat ini?
Saat memigrasi komponen kelas ke komponen yang berfungsi (dengan kait), saya melihat penurunan kinerja yang signifikan . Saya memiliki komponen (disebut TreeNodeComponent
) yang merupakan bagian dari struktur pohon. Bergantung pada ukuran pohon, ratusan instance dapat terlihat.
Membungkus komponen fungsi dalam PureComponent secara signifikan mengurangi "waktu render" yang diamati. (Dari ~160ms hingga ~60ms)
Aplikasi merender ratusan TreeNodeComponent
dalam tree-structure
. Ketika orang tua diperbarui, semua anak langsung perlu direkonsiliasi.
Proyek: https://github.com/thomasnordquist/MQTT-Explorer
Apa perilaku yang diharapkan?
Kinerja yang sebanding antara komponen fungsional dan kelas.
Versi React yang mana, dan browser/OS mana yang terpengaruh oleh masalah ini?
OSX
Kromium 73 / Elektron 5.0.5
Bereaksi 16.8
TypeScript & Webpack
Membungkus komponen fungsi dalam PureComponent secara signifikan mengurangi "waktu render" yang diamati. (Dari ~160ms hingga ~60ms)
Itu yang diharapkan jika rendering TreeNodeComponent
mahal. React.PureComponent
bail out lebih awal jika props tidak berubah.
Saat memigrasikan komponen kelas ke komponen yang berfungsi (dengan kait), saya melihat penurunan kinerja yang signifikan.
Apakah Anda mengatakan bahwa beralih dari kelas yang memperluas React.Component
ke komponen fungsi menyebabkan regresi kinerja? Atau apakah Anda sudah menggunakan React.PureComponent
(atau shouldComponentUpdate
)
Anda dapat menggunakan React.memo
untuk mendapatkan semantik bailout yang sama dengan komponen fungsi.
Saya bermigrasi dari React.Component
dengan shouldComponentUpdate
.
Saya menggunakan React.useMemo
untuk menghindari "rendering".
React.memo
menghasilkan hasil sebaik yang dari PureComponent
. (~50-60ms)
Terima kasih banyak untuk mengklarifikasi.
Saya tidak mendapatkan mana yang lebih baik: komponen fungsional atau komponen kelas. Apa yang harus saya gunakan untuk daftar panjang?
Komentar yang paling membantu
Itu yang diharapkan jika rendering
TreeNodeComponent
mahal.React.PureComponent
bail out lebih awal jika props tidak berubah.Apakah Anda mengatakan bahwa beralih dari kelas yang memperluas
React.Component
ke komponen fungsi menyebabkan regresi kinerja? Atau apakah Anda sudah menggunakanReact.PureComponent
(ataushouldComponentUpdate
)Anda dapat menggunakan
React.memo
untuk mendapatkan semantik bailout yang sama dengan komponen fungsi.