Menelusuri Perbedaan React dan Solid
(dev.to)Kami meninjau perbedaan antara React, pelopor JSX, dan Solid.js, yang lahir dari JSX namun tidak menggunakan virtual DOM seperti React.
Dengan asumsi seorang pengembang React mencoba mendekati Solid.js, ada beberapa perbedaan mendasar berikut.
- Fungsi hook React hanya bisa digunakan di dalam fungsi komponen, sedangkan fungsi manajemen state di SolidJS tidak memiliki batasan pemanggilan dan terasa seperti teknologi manajemen state yang berdiri sendiri.
- Fungsi side-effect React,
useEffect, dapat menangani efek samping sekaligus pembersihannya dalam satu fungsi, dan state yang terpengaruh juga bisa ditentukan secara manual. Sementara itu, fungsi side-effect Solid.js,createEffect, seperti di Svelte, dipengaruhi oleh state yang dituliskan di dalam badan fungsi, tidak menerima state yang terpengaruh secara manual, dan tidak menyediakan fungsi pengembalian, tetapi menyediakan satu lingkungan siklus manajemen state sehingga fungsi pembersihan bisa digunakan melaluionCleanup. - Untuk pengelolaan cakupan state, tidak ada perbedaan penggunaan yang berarti dibanding React.
- Untuk komponen dinamis, kondisi, atau perulangan, React dapat dengan mudah menanganinya memakai logika JS karena badan fungsi ditulis ulang saat state berubah. Namun, karena badan fungsi di Solid dipertahankan, hal ini diselesaikan melalui komponen bawaan yang disediakan.
- Komponen
lazydan<Suspense>milik React juga tersedia di Solid.js. - Berbeda dari React, Solid menyediakan fungsi utilitas manajemen state yang mempertimbangkan reaktivitas asinkron.
- Cara penggunaan
refdi React dan Solid.js mirip, tetapi fungsi khusus referensi sepertiuseRefyang umum di React dapat digantikan di Solid.js dengan variabelletsederhana. - Solid.js, seperti Svelte, menyediakan karakteristik aksi
useuntuk mengelola siklus hidup vanilla JS. - Props di React tetap bisa digunakan secara terpisah melalui destructuring karena badan fungsi akan ditulis ulang saat props berubah. Namun, jika cara ini dipakai di Solid.js, nilainya tidak akan reaktif, sehingga props tidak bisa digunakan secara terpisah lewat destructuring; props harus dipakai dalam bentuk objek, atau dipecah lewat fungsi utilitas yang menyediakan pemisahan atau penggabungan objek (
splitPropsdan sebagainya) agar tetap digunakan seperti objek.
1 komentar
Perbedaan terbesar ada pada perbedaan antara
useStatedanuseSignal. Karena data binding-nya tidak terlihat secara kasatmata, saya ingat pernah sangat kesulitan saat melakukan debugging.