14 poin oleh composite 2023-07-13 | 1 komentar | Bagikan ke WhatsApp

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 melalui onCleanup.
  • 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 lazy dan <Suspense> milik React juga tersedia di Solid.js.
  • Berbeda dari React, Solid menyediakan fungsi utilitas manajemen state yang mempertimbangkan reaktivitas asinkron.
  • Cara penggunaan ref di React dan Solid.js mirip, tetapi fungsi khusus referensi seperti useRef yang umum di React dapat digantikan di Solid.js dengan variabel let sederhana.
  • Solid.js, seperti Svelte, menyediakan karakteristik aksi use untuk 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 (splitProps dan sebagainya) agar tetap digunakan seperti objek.

1 komentar

 
firea32 2023-07-17

Perbedaan terbesar ada pada perbedaan antara useState dan useSignal. Karena data binding-nya tidak terlihat secara kasatmata, saya ingat pernah sangat kesulitan saat melakukan debugging.