रियेक्ट (जावास्क्रिप्ट लाइब्रेरी)

रिएक्ट (जिसे React.js या ReactJS के नाम से भी जाना जाता है) एक फ्री और ओपन-सोर्स सॉफ्टवेयर है | फ्री और ओपन-सोर्स फ्रंट एंड और बैक एंड| फ्रंट-एंड जावास्क्रिप्ट पुस्तकालय घटक-आधारित सॉफ़्टवेयर इंजीनियरिंग पर आधारित उपयोगकर्ता इंटरफ़ेस बनाने के लिए। यह मेटा प्लेटफार्म (पूर्व में फेसबुक) और व्यक्तिगत डेवलपर्स और कंपनियों के एक समुदाय द्वारा बनाए रखा जाता है।

रिएक्ट का उपयोग एक पेज का आवेदन के विकास में आधार के रूप में किया जा सकता है। सिंगल-पेज, मोबाइल, या सर्वर-रेंडर किए गए आवेदन जैसे कि नेक्स्ट जेएस हालांकि रिएक्ट केवल यूजर इंटरफेस और दस्तावेज़ वस्तु मॉडल के घटकों को रेंडर करने से संबंधित है, इसलिए रिएक्ट आवेदन बनाने के लिए आमतौर पर रूटिंग के लिए अतिरिक्त पुस्तकालय के उपयोग के साथ-साथ कुछ क्लाइंट-साइड कार्यक्षमता की आवश्यकता होती है।

मूल उपयोग
निम्नलिखित रिएक्ट (जावास्क्रिप्ट पुस्तकालय ) #JSX और जावास्क्रिप्ट में लिखे वेब के लिए रिएक्ट का उपयोग करने का एक प्रारंभिक उदाहरण है।

<वाक्यविन्यास लैंग = जावास्क्रिप्ट> आयात प्रतिक्रिया 'प्रतिक्रिया' से; 'रिएक्ट-डोम/क्लाइंट' से रिएक्टडॉम आयात करें;

const ग्रीटिंग = => { वापस करना (                   हैलो, दुनिया!     ); };

कॉन्स्ट ऐप = => { वापसी <ग्रीटिंग />; };

const root = ReactDOM.createRoot(document.getElementById('root'));

रूट.रेंडर (           <ऐप />     ); 

नीचे दिए गए HTML दस्तावेज़ के आधार पर।

<वाक्यविन्यास लैंग = html> <!DOCTYPE html> <एचटीएमएल लैंग = एन> <सिर> <मेटा वर्णसेट = utf-8 /> प्रतिक्रिया ऐप   इस ऐप को चलाने के लिए आपको जावास्क्रिप्ट सक्षम करने की आवश्यकता है।     ई> फ़ंक्शन एक रिएक्ट घटक है जो प्रसिद्ध परिचयात्मक हैलो, वर्ल्ड को प्रदर्शित करता है! कार्यक्रम| नमस्कार, दुनिया।

जब एक वेब ब्राउज़र में प्रदर्शित किया जाता है, तो परिणाम इसका प्रतिपादन होगा: <वाक्यविन्यास लैंग = html>  हैलो, दुनिया! 

घोषणात्मक
प्रतिक्रिया घोषणात्मक प्रोग्रामिंग प्रतिमान (एक प्रोग्रामिंग प्रतिमान) का पालन करती है। डेवलपर्स किसी आवेदन की प्रत्येक स्थिति के लिए दृश्य डिजाइन करते हैं, और जब डेटा बदलते हैं तो रिएक्ट अपडेट और घटकों को प्रस्तुत करता है। यह अनिवार्य प्रोग्रामिंग के विपरीत है।

घटक
प्रतिक्रिया कोड घटक-आधारित सॉफ़्टवेयर इंजीनियरिंग नामक संस्थाओं से बना है। ये घटक पुन: प्रयोज्य हैं और पास्कल केस के नामकरण सम्मेलन (कैमलकेस को कैपिटलाइज़) के रूप में एसआरसी फ़ोल्डर में बनाया जाना चाहिए। रिएक्ट डोम लाइब्रेरी का उपयोग करके दस्तावेज़ ऑब्जेक्ट मॉडल में किसी विशेष तत्व के लिए घटकों को प्रस्तुत किया जा सकता है। एक घटक का प्रतिपादन करते समय, कोई व्यक्ति प्रॉप्स के माध्यम से घटकों के बीच मान पारित कर सकता है: <वाक्यविन्यास लैंग = जावास्क्रिप्ट> प्रतिक्रिया से प्रतिक्रिया आयात करें; ./Tool से उपकरण आयात करें; कास्ट उदाहरण = => { वापस करना (   <>              <उपकरण का नाम = गुलशन />      ); }; निर्यात डिफ़ॉल्ट उदाहरण; 

उपरोक्त उदाहरण में,  संपत्ति मूल्य के साथ गुलशन से पारित किया गया है   घटक के लिए   अवयव।

यह भी  अनुभाग टैग में लपेटा गया है क्योंकि इसमें एक सीमा है   फ़ंक्शन, यह केवल एक मान लौटा सकता है। तो सभी JSX तत्व और घटक एक ही टैग में बंधे हैं।

रिएक्ट में घटकों को घोषित करने के दो प्राथमिक तरीके फ़ंक्शन घटकों और वर्ग-आधारित घटकों के माध्यम से होते हैं।

कार्यात्मक घटक
फ़ंक्शन घटकों को एक फ़ंक्शन के साथ घोषित किया जाता है जो कुछ JSX लौटाता है। रिएक्ट 16.8 संस्करण और ऊपर से, कार्यात्मक घटक हुक का उपयोग करके राज्य का उपयोग कर सकते हैं।

<वाक्यविन्यास प्रकाश लैंग = जेएस> const अभिवादनकर्ता = => हैलो वर्ल्ड ; </वाक्यविन्यास हाइलाइट>

प्रतिक्रिया हुक
16 फरवरी, 2019 को रिएक्ट 16.8 को जनता के लिए जारी किया गया। रिलीज़ ने रिएक्ट हुक पेश किया। हुक ऐसे कार्य हैं जो डेवलपर्स को फ़ंक्शन घटकों से रिएक्ट स्थिति और जीवनचक्र सुविधाओं में हुक करने देते हैं। हुक कक्षाओं के अंदर काम नहीं करते - वे आपको कक्षाओं के बिना रिएक्ट का उपयोग करने देते हैं। रिएक्ट कुछ बिल्ट-इन हुक प्रदान करता है जैसे,  ,   ,   और. अन्य हुक्स एपीआई संदर्भ में प्रलेखित हैं।  और , जो सबसे अधिक उपयोग किए जाते हैं, क्रमशः अवस्था और दुष्प्रभाव को नियंत्रित करने के लिए हैं।

हुक के नियम
हुक के नियम हैं जो विशेषता कोड पैटर्न का वर्णन करता है जिस पर हुक भरोसा करते हैं। यह राज्य को रिएक्ट के साथ संभालने का आधुनिक तरीका है।


 * 1) हुक को केवल शीर्ष स्तर पर बुलाया जाना चाहिए (लूपों के अंदर या यदि बयान नहीं)।
 * 2) हुक को केवल रिएक्ट फ़ंक्शन घटकों और कस्टम हुक से बुलाया जाना चाहिए, सामान्य फ़ंक्शन या वर्ग घटकों से नहीं।

हालांकि इन नियमों को रनटाइम पर लागू नहीं किया जा सकता है, विकास के दौरान कई गलतियों का पता लगाने के लिए लिंट (सॉफ़्टवेयर) जैसे कोड विश्लेषण टूल को कॉन्फ़िगर किया जा सकता है। नियम हुक के उपयोग और कस्टम हुक के कार्यान्वयन दोनों पर लागू होते हैं, जो अन्य हुक कह सकते हैं।

वर्ग-आधारित घटक
कक्षा-आधारित घटकों को ईसीएमएस्क्रिप्ट कक्षाओं का उपयोग करके घोषित किया जाता है। <वाक्यविन्यास प्रकाश लैंग = जेएस लाइन = 1> वर्ग ParentComponent React.Component का विस्तार करता है { राज्य = {रंग: 'हरा'}; प्रदान करना { वापस करना (     <ChildComponent color={this.state.color} />    ); } } </वाक्यविन्यास हाइलाइट>

जहाँ वर्ग घटक सभी वर्गों और जीवनचक्र विधियों के उपयोग के बारे में हैं, कार्यात्मक घटकों में राज्य प्रबंधन और प्रतिक्रिया में कोड लिखते समय उत्पन्न होने वाली अन्य समस्याओं से निपटने के लिए हुक हैं।

वर्चुअल डोम
एक अन्य उल्लेखनीय विशेषता वर्चुअल डॉक्यूमेंट ऑब्जेक्ट मॉडल या वर्चुअल डोम का उपयोग है। रिएक्ट इन-मेमोरी प्रोसेसिंग|इन-मेमोरी डेटा-स्ट्रक्चर कैश बनाता है, परिणामी अंतरों की गणना करता है, और फिर ब्राउज़र के प्रदर्शित डोम को कुशलता से अपडेट करता है। इस प्रक्रिया को सुलह कहा जाता है। यह प्रोग्रामर को कोड लिखने की अनुमति देता है जैसे कि प्रत्येक परिवर्तन पर पूरे पृष्ठ को प्रस्तुत किया जाता है, जबकि रिएक्ट पुस्तकालय केवल उप-घटकों को प्रस्तुत करती है जो वास्तव में बदलते हैं। यह चुनिंदा प्रतिपादन एक प्रमुख प्रदर्शन को बढ़ावा देता है। यह सीएसएस शैली, पृष्ठ के लिए लेआउट और पूरे पृष्ठ के लिए रेंडरिंग के पुनर्गणना के प्रयास को बचाता है।

अद्यतन
जब तुमने फोन किया फिर से उसी घटक और लक्ष्य के लिए, रिएक्ट मौजूदा वर्चुअल डोम लेता है यह पिछली बार के बारे में जानता है जब उसने तत्व पेड़ को प्रस्तुत किया, इसकी तुलना आप जो भी नई चीज प्रस्तुत करना चाहते हैं, और यह निर्धारित करता है कि जीवित डोम के कौन से (यदि कोई हैं) को बदलने की जरूरत है।



जीवनचक्र के तरीके
वर्ग-आधारित घटकों के लिए जीवनचक्र विधियाँ हुकिंग के एक रूप का उपयोग करती हैं जो घटक के जीवनकाल के दौरान निर्धारित बिंदुओं पर कोड के निष्पादन की अनुमति देता है।


 * यदि रेंडर की आवश्यकता नहीं है तो डेवलपर को झूठी वापसी करके घटक के अनावश्यक पुन: प्रतिपादन को रोकने की अनुमति देता है।
 * एक बार घटक माउंट हो जाने के बाद कॉल किया जाता है (घटक को उपयोगकर्ता इंटरफ़ेस में बनाया गया है, अक्सर इसे दस्तावेज़ ऑब्जेक्ट मॉडल नोड के साथ जोड़कर)। यह आमतौर पर एक एपीआई के माध्यम से एक दूरस्थ स्रोत से डेटा लोडिंग को ट्रिगर करने के लिए उपयोग किया जाता है।
 * घटक के फटे या अनमाउंट होने से ठीक पहले कॉल किया जाता है। यह आमतौर पर घटक के लिए संसाधन-मांग निर्भरता को साफ़ करने के लिए उपयोग किया जाता है जो केवल घटक के अनमाउंटिंग के साथ नहीं हटाया जाएगा (उदाहरण के लिए, किसी भी घटक को हटाना)  उदाहरण जो घटक से संबंधित हैं, या एक घटना (कंप्यूटिंग) घटक की उपस्थिति के कारण दस्तावेज़ पर सेट है)
 * सबसे महत्वपूर्ण जीवनचक्र विधि है और किसी भी घटक में एकमात्र आवश्यक है। यह आमतौर पर हर बार घटक की स्थिति को अद्यतन करने के लिए कहा जाता है, जो उपयोगकर्ता इंटरफ़ेस में परिलक्षित होना चाहिए।

जेएसएक्स
JSX (जावास्क्रिप्ट), या जावास्क्रिप्ट सिंटैक्स एक्सटेंशन, जावास्क्रिप्ट भाषा सिंटैक्स का एक विस्तार है। HTML के समान, JSX कई डेवलपर्स के लिए परिचित सिंटैक्स का उपयोग करके संरचना घटक रेंडरिंग का एक तरीका प्रदान करता है। प्रतिक्रिया घटक आमतौर पर JSX का उपयोग करके लिखे जाते हैं, हालांकि उन्हें होना जरूरी नहीं है (घटक शुद्ध जावास्क्रिप्ट में भी लिखे जा सकते हैं)। JSX Facebook द्वारा PHP के लिए बनाए गए एक अन्य एक्सटेंशन सिंटैक्स के समान है जिसे XHP कहा जाता है।

जेएसएक्स कोड का एक उदाहरण: <वाक्यविन्यास लैंग = डार्ट> वर्ग ऐप React.Component { का विस्तार करता है प्रदान करना { वापस करना (     <दिव>        शीर्षक         सामग्री         फुटर     ); } } </वाक्यविन्यास हाइलाइट>

HTML से परे वास्तुकला
रिएक्ट का मूल आर्किटेक्चर ब्राउज़र में HTML रेंडर करने से परे लागू होता है। उदाहरण के लिए, फेसबुक के पास डायनेमिक चार्ट हैं जो प्रस्तुत करते हैं  टैग, और नेटफ्लिक्स और पेपैल सर्वर और क्लाइंट दोनों पर समान एचटीएमएल प्रस्तुत करने के लिए सार्वभौमिक लोडिंग का उपयोग करते हैं।

सर्वर-साइड रेंडरिंग
सर्वर-साइड रेंडरिंग ब्राउज़र के बजाय सर्वर पर क्लाइंट-साइड जावास्क्रिप्ट आवेदन को रेंडर करने की प्रक्रिया को संदर्भित करता है। यह आपके आवेदन के प्रदर्शन में सुधार कर सकता है, विशेष रूप से धीमे कनेक्शन या डिवाइस वाले उपयोगकर्ताओं के लिए।

सर्वर-साइड रेंडरिंग के साथ, क्लाइंट को भेजे जाने वाले शुरुआती HTML में आपके आवेदन का पूरी तरह से रेंडर किया गया UI शामिल होता है। यह क्लाइंट के ब्राउज़र को यूआई को रेंडर करने से पहले जावास्क्रिप्ट को डाउनलोड करने और निष्पादित करने की प्रतीक्षा करने के बजाय तुरंत यूआई प्रदर्शित करने की अनुमति देता है।

रिएक्ट सर्वर-साइड रेंडरिंग का समर्थन करता है, जो आपको सर्वर पर अपने रिएक्ट घटकों को प्रस्तुत करने और परिणामी HTML को क्लाइंट को भेजने की अनुमति देता है। यह आपके आवेदन के प्रदर्शन में सुधार के साथ-साथ खोज इंजन अनुकूलन (एसईओ) उद्देश्यों के लिए उपयोगी हो सकता है।. स्टोर, जिन्हें मॉडल के रूप में सोचा जा सकता है, डिस्पैचर से प्राप्त कार्यों के जवाब में खुद को बदल सकते हैं।

इस पैटर्न को कभी-कभी गुणों के प्रवाह के रूप में व्यक्त किया जाता है, क्रियाएं ऊपर की ओर प्रवाहित होती हैं। फ्लक्स के कई कार्यान्वयन इसकी स्थापना के बाद से बनाए गए हैं, शायद सबसे प्रसिद्ध Redux (जावास्क्रिप्ट पुस्तकालय ) है, जिसमें एक एकल स्टोर है, जिसे अक्सर सत्य का एकल स्रोत कहा जाता है। फरवरी 2019 में,  16.8 रिलीज में रिएक्ट (वेब ​​​​फ्रेमवर्क) #React हुक के रूप में पेश किया गया था। यह एक एपीआई प्रदान करता है जो Redux के अनुरूप है, डेवलपर्स को Redux जैसे स्टोर बनाने में सक्षम बनाता है जो घटक राज्यों के लिए स्थानीय हैं।

भविष्य का विकास
कोर टीम चर्चा मंच के माध्यम से परियोजना की स्थिति का पता लगाया जा सकता है। हालाँकि, रिएक्ट में बड़े बदलाव भविष्य के रिएक्ट रिपॉजिटरी मुद्दों और पुल अनुरोधों से गुजरते हैं। यह रिएक्ट समुदाय को नई संभावित सुविधाओं, प्रायोगिक एपीआई और जावास्क्रिप्ट सिंटैक्स सुधारों पर प्रतिक्रिया प्रदान करने में सक्षम बनाता है।

इतिहास
रिएक्ट मेटा प्लेटफॉर्म्स के एक सॉफ्टवेयर इंजीनियर जॉर्डन वाल्के द्वारा बनाया गया था, जिन्होंने फैक्सजेएस नामक रिएक्ट का एक प्रारंभिक प्रोटोटाइप जारी किया था। वह PHP के लिए एक HTML घटक पुस्तकालय, XHP से प्रभावित था। इसे पहली बार 2011 में फेसबुक के समाचार फ़ीड और बाद में 2012 में Instagram पर तैनात किया गया था। इसे मई 2013 में JSConf US में ओपन-सोर्स किया गया था। प्रतिक्रियाशील मूल निवासी, जो देशी एंड्रॉइड (ऑपरेटिंग सिस्टम), आईओएस और यूनिवर्सल विंडोज प्लेटफॉर्म डेवलपमेंट को रिएक्ट के साथ सक्षम बनाता है, की घोषणा फरवरी 2015 में फेसबुक के रिएक्ट कॉन्फ में की गई थी और मार्च 2015 में ओपन-सोर्स की गई थी।

18 अप्रैल, 2017 को, फेसबुक ने रिएक्ट फ़ाइबर की घोषणा की, जो रिएक्ट के पुराने रेंडरिंग एल्गोरिथम, स्टैक के विपरीत रेंडरिंग के लिए आंतरिक एल्गोरिदम का एक नया सेट है। रिएक्ट फाइबर को रिएक्ट पुस्तकालय के किसी भी भविष्य के सुधार और फीचर विकास की नींव बनना था।  रिएक्ट के साथ प्रोग्रामिंग के लिए वास्तविक सिंटैक्स नहीं बदलता है; सिंटैक्स निष्पादित करने का तरीका ही बदल गया है। रिएक्ट का पुराना रेंडरिंग सिस्टम, स्टैक, ऐसे समय में विकसित किया गया था जब गतिशील परिवर्तन पर सिस्टम का फोकस समझ में नहीं आया था। जटिल एनिमेशन बनाने में स्टैक धीमा था, उदाहरण के लिए, इसे एक चंक में पूरा करने का प्रयास करना। फाइबर एनीमेशन को खंडों में तोड़ देता है जिसे कई फ़्रेमों में फैलाया जा सकता है। इसी तरह, एक पृष्ठ की संरचना को खंडों में तोड़ा जा सकता है जिसे अलग से बनाए रखा और अद्यतन किया जा सकता है। जावास्क्रिप्ट फ़ंक्शंस और वर्चुअल डॉक्यूमेंट ऑब्जेक्ट मॉडल ऑब्जेक्ट को फ़ाइबर कहा जाता है, और प्रत्येक को अलग से संचालित और अपडेट किया जा सकता है, जिससे ऑन-स्क्रीन रेंडरिंग आसान हो जाती है। 26 सितंबर, 2017 को रिएक्ट 16.0 को जनता के लिए जारी किया गया। 10 अगस्त, 2020 को, रिएक्ट टीम ने रिएक्ट v17.0 के लिए पहले रिलीज उम्मीदवार की घोषणा की, जो रिएक्ट डेवलपर-फेसिंग एपीआई में बड़े बदलाव के बिना पहली बड़ी रिलीज के रूप में उल्लेखनीय है। 29 मार्च, 2022 को रिएक्ट 18 जारी किया गया, जिसमें एक नया समवर्ती रेंडरर, स्वचालित बैचिंग और सस्पेंस के साथ सर्वर साइड रेंडरिंग के लिए समर्थन पेश किया गया।

लाइसेंसिंग
मई 2013 में रिएक्ट की प्रारंभिक सार्वजनिक रिलीज़ में अपाचे लाइसेंस 2.0 का उपयोग किया गया था। अक्टूबर 2014 में, रिएक्ट 0.12.00 ने इसे बीएसडी लाइसेंस #3-क्लॉज|3-क्लॉज बीएसडी लाइसेंस के साथ बदल दिया और एक अलग पेटेंट टेक्स्ट फ़ाइल जोड़ी जो सॉफ्टवेयर से संबंधित किसी भी फेसबुक पेटेंट के उपयोग की अनुमति देती है: यहां दिया गया लाइसेंस स्वचालित रूप से और बिना किसी नोटिस के समाप्त हो जाएगा, जो कोई भी दावा करता है (किसी भी मुकदमे, दावे या अन्य कार्रवाई को दर्ज करके) आरोप लगाता है (ए) प्रत्यक्ष, अप्रत्यक्ष, या अंशदायी उल्लंघन या किसी पेटेंट का उल्लंघन करने के लिए प्रेरित करता है : (i) Facebook या उसकी किसी अनुषंगी या संबद्ध कंपनी द्वारा, चाहे ऐसा दावा सॉफ़्टवेयर से संबंधित हो या नहीं, (ii) किसी भी पक्ष द्वारा यदि ऐसा दावा पूर्ण रूप से या आंशिक रूप से Facebook के किसी सॉफ़्टवेयर, उत्पाद या सेवा से उत्पन्न होता है या इसकी कोई सहायक या सहयोगी, चाहे ऐसा दावा सॉफ़्टवेयर से संबंधित है या नहीं, या (iii) सॉफ़्टवेयर से संबंधित किसी भी पक्ष द्वारा; या (बी) कि फेसबुक के किसी भी पेटेंट दावे में कोई अधिकार अमान्य या अप्रवर्तनीय है। परिदृश्य, उदाहरण के लिए, यदि फेसबुक लाइसेंसधारी पर मुकदमा करता है जो उन्हें किसी ब्लॉग या अन्य जगहों पर कार्रवाई प्रकाशित करके अन्य कार्रवाई करने के लिए प्रेरित करता है। कई लोगों ने चिंता व्यक्त की कि फेसबुक टर्मिनेशन क्लॉज का गलत फायदा उठा सकता है या किसी उत्पाद में रिएक्ट को एकीकृत करने से स्टार्टअप कंपनी के भविष्य के अधिग्रहण में मुश्किल हो सकती है। सामुदायिक प्रतिक्रिया के आधार पर, फेसबुक ने अप्रैल 2015 में पेटेंट अनुदान को कम अस्पष्ट और अधिक अनुज्ञेय होने के लिए अद्यतन किया: यदि आप (या आपकी कोई सहायक कंपनी, कॉर्पोरेट सहयोगी या एजेंट) प्रत्यक्ष या अप्रत्यक्ष रूप से किसी पेटेंट अभिकथन में प्रत्यक्ष वित्तीय रुचि लेते हैं, या निम्नलिखित में से कोई भी प्रत्यक्ष वित्तीय हित लेते हैं, तो इसके तहत दिया गया लाइसेंस स्वचालित रूप से और बिना किसी नोटिस के समाप्त हो जाएगा: (i) Facebook या उसकी कोई सहायक कंपनी या कॉर्पोरेट संबद्ध, (ii) किसी भी पक्ष के विरुद्ध यदि इस तरह का पेटेंट दावा Facebook या उसकी किसी सहायक कंपनी या कॉर्पोरेट सहयोगी के किसी सॉफ़्टवेयर, तकनीक, उत्पाद या सेवा से पूर्ण या आंशिक रूप से उत्पन्न होता है, या (iii) सॉफ्टवेयर से संबंधित किसी भी पक्ष के खिलाफ। [...] एक पेटेंट अभिकथन कोई भी मुकदमा या अन्य कार्रवाई है जिसमें प्रत्यक्ष, अप्रत्यक्ष, या अंशदायी उल्लंघन या किसी पेटेंट का उल्लंघन करने के लिए प्रलोभन शामिल है, जिसमें क्रॉस-दावा या प्रतिदावा शामिल है। </ब्लॉककोट>

Apache अपाचे सॉफ्टवेयर फाउंडेशन इस लाइसेंसिंग व्यवस्था को अपनी लाइसेंसिंग नीतियों के साथ असंगत माना, क्योंकि यह हमारे सॉफ़्टवेयर के डाउनस्ट्रीम उपभोक्ताओं के लिए जोखिम के साथ गुजरता है जो लाइसेंसकर्ता के पक्ष में असंतुलित होता है, न कि लाइसेंसधारी के पक्ष में, जिससे एक सार्वभौमिक दाता होने की हमारी Apache कानूनी नीति का उल्लंघन होता है, और [Apache लाइसेंस 2.0] में पाए जाने वाले उप-समूह नहीं हैं, और उन्हें [Apache लाइसेंस 2.0] के रूप में उप-लाइसेंस नहीं दिया जा सकता है। अगस्त 2017 में, फेसबुक ने अपाचे फाउंडेशन की डाउनस्ट्रीम चिंताओं को खारिज कर दिया और उनके लाइसेंस पर पुनर्विचार करने से इनकार कर दिया। अगले महीने, WordPress के ने अपने गुटेनबर्ग और कैलीप्सो परियोजनाओं को रिएक्ट से दूर करने का फैसला किया। 23 सितंबर, 2017 को, फेसबुक ने घोषणा की कि अगले सप्ताह, यह एक मानक मेरा लाइसेंस के तहत फ्लो, हां (जावास्क्रिप्ट ढांचा), रिएक्ट और इम्यूटेबल.जेएस को फिर से लाइसेंस देगा; कंपनी ने कहा कि रिएक्ट वेब के लिए ओपन सोर्स सॉफ्टवेयर के एक व्यापक पारिस्थितिकी तंत्र की नींव थी, और वे गैर-तकनीकी कारणों से प्रगति को रोकना नहीं चाहते थे। 26 सितंबर, 2017 को रिएक्ट 16.0.0 को MIT लाइसेंस के साथ जारी किया गया था। MIT लाइसेंस परिवर्तन को रिएक्ट 15.6.2 के साथ 15.x रिलीज लाइन में भी वापस भेज दिया गया है।

यह भी देखें

 * कोणीय (वेब ​​​​ढांचा)
 * बैकबोन.जेएस
 * एम्बर.जेएस
 * गैट्सबी (जावास्क्रिप्ट फ्रेमवर्क)
 * अगला.जेएस
 * दुर्बल
 * Vue.js
 * जावास्क्रिप्ट पुस्तकालयों की तुलना
 * वेब घटक