JSX के मूल स्रोत React और JSX से निकले, लेकिन React के विपरीत virtual DOM का उपयोग न करने वाले Solid.js के बीच के फ़र्क़ों को देखा गया है.
अगर कोई React डेवलपर Solid.js की ओर बढ़े, तो बुनियादी तौर पर नीचे दिए गए फ़र्क़ दिखाई देते हैं.
- React के hook functions केवल component function के भीतर ही इस्तेमाल किए जा सकते हैं, जबकि SolidJS के state management functions को लगभग स्वतंत्र state management तकनीक की तरह, call पर किसी बंधन के बिना उपयोग किया जा सकता है.
- React का side-effect function
useEffectएक ही function में side effect के handling से लेकर cleanup तक एक साथ दे सकता है, और प्रभावित होने वाली state को मैन्युअली भी निर्दिष्ट किया जा सकता है. वहीं Solid.js का side-effect functioncreateEffect, Svelte की तरह, body में स्पष्ट की गई state management पर निर्भर करता है, प्रभावित state को मैन्युअली नहीं लेता, return function नहीं देता, लेकिन एक state management lifecycle environment देता है, जिससेonCleanupके ज़रिए cleanup function का उपयोग किया जा सकता है. - State scope management के मामले में React और Solid के उपयोग में कोई बड़ा अंतर नहीं है.
- Dynamic components, conditions और loops के लिए React में state बदलने पर body दोबारा लिखी जाती है, इसलिए सामान्य js logic से इसे आसानी से संभाला जा सकता है. लेकिन Solid में body बनी रहती है, इसलिए इसके लिए दिए गए built-in components के ज़रिए समाधान किया जा सकता है.
- React के
lazyऔर<Suspense>components, Solid.js में भी उपलब्ध हैं. - Solid, React से अलग, asynchronous reactivity को ध्यान में रखकर state management utility functions प्रदान करता है.
- React के
refऔर Solid.js केrefकी उपयोग शैली मिलती-जुलती है, लेकिन React में reference के लिए आम तौर परuseRefजैसे dedicated function की ज़रूरत होती है, जबकि Solid.js में इसे साधारणletvariable से भी संभाला जा सकता है. - Solid.js, Svelte की तरह, vanilla JS के lifecycle को manage करने वाली
useaction विशेषता प्रदान करता है. - React में props को destructuring करके अलग से इस्तेमाल करने पर भी props बदलने पर body दोबारा लिखी जाती है, इसलिए कोई समस्या नहीं होती. लेकिन Solid.js में ऐसा करने पर reactivity काम नहीं करती, इसलिए destructuring के ज़रिए अलग props का उपयोग नहीं किया जा सकता. इसके बजाय object रूप में ही उपयोग करना होता है, या object split/merge देने वाले utility functions (
splitPropsआदि) से बाँटकर भी उन्हें object की तरह इस्तेमाल करना पड़ता है.
1 टिप्पणियां
सबसे बड़ा फ़र्क useState और useSignal के बीच है। डेटा कैसे bind हो रहा है यह साफ़ दिखाई नहीं देता, इसलिए debug करते समय मुझे बहुत ज़्यादा परेशानी हुई थी।