14 Punkte von composite 2023-07-13 | 1 Kommentare | Auf WhatsApp teilen

Wir haben uns die Unterschiede zwischen React, dem Ursprung von JSX, und Solid.js angesehen, das von JSX abgeleitet ist und im Gegensatz zu React kein Virtual DOM verwendet.

Wenn man davon ausgeht, dass sich ein React-Entwickler Solid.js nähert, gibt es grundlegend die folgenden Unterschiede.

  • Die Hook-Funktionen von React können nur innerhalb von Komponentenfunktionen verwendet werden, während die State-Management-Funktionen von SolidJS ohne Einschränkungen beim Aufruf genutzt werden können, fast wie eine eigenständige State-Management-Technologie.
  • Die Side-effect-Funktion useEffect von React kann in einer einzigen Funktion sowohl die Behandlung von Nebenwirkungen als auch deren Aufhebung bereitstellen, und die betroffenen States können auch manuell angegeben werden. Die Side-effect-Funktion createEffect von Solid.js hingegen wird – ähnlich wie bei Svelte – von dem im Funktionskörper angegebenen State-Management beeinflusst, nimmt die betroffenen States nicht manuell entgegen und stellt keine Rückgabefunktion bereit. Stattdessen bietet sie den Kontext eines einzelnen State-Management-Zyklus, in dem über onCleanup eine Cleanup-Funktion verwendet werden kann.
  • Beim Management des State-Scopes gibt es in der Verwendung keine Unterschiede zu React.
  • Bei dynamischen Komponenten, Bedingungen und Schleifen kann React aufgrund der Eigenschaft, dass der Funktionskörper bei State-Änderungen neu geschrieben wird, leicht mit JS-Logik darauf reagieren. Solid kann dies über die bereitgestellten eingebauten Komponenten lösen, da der Funktionskörper bestehen bleibt.
  • Die Komponenten lazy und <Suspense> aus React werden auch in Solid.js bereitgestellt.
  • Im Unterschied zu React bietet Solid Utility-Funktionen für das State-Management, die asynchrone Reaktivität berücksichtigen.
  • Die Verwendung von ref in React und in Solid.js ist ähnlich, aber während in React häufig spezielle Funktionen wie useRef zum Referenzieren verwendet werden, kann in Solid.js dafür einfach eine let-Variable genutzt werden.
  • Solid.js bietet wie Svelte die Eigenschaft von use-Actions, mit denen der Lebenszyklus von Vanilla JS verwaltet werden kann.
  • Props in React können per Destrukturierung einzeln verwendet werden, ohne Probleme bei Änderungen der Props zu verursachen, da der Funktionskörper dabei neu geschrieben wird. Verwendet man diese Methode jedoch in Solid.js, reagiert sie nicht, weshalb eine isolierte Nutzung von Props per Destrukturierung nicht möglich ist. Stattdessen müssen sie entweder im Objektformat beibehalten oder mit Utility-Funktionen zur Objektaufteilung oder -zusammenführung (splitProps usw.) zerlegt und weiterhin wie Objekte verwendet werden.

1 Kommentare

 
firea32 2023-07-17

Der größte Unterschied ist wohl der zwischen useState und useSignal. Ich erinnere mich noch daran, wie sehr ich mich beim Debuggen abgemüht habe, weil man nicht sehen konnte, wie die Daten gebunden werden.