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

प्रतिक्रिया (जिसे 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-क्लॉज बीएसडी लाइसेंस के साथ बदल दिया और एक अलग पेटेंट टेक्स्ट फ़ाइल जोड़ी जो सॉफ्टवेयर से संबंधित किसी भी फेसबुक पेटेंट के उपयोग की अनुमति देती है: यहां दिया गया लाइसेंस स्वचालित रूप से और बिना किसी सूचना के समाप्त हो जाएगा जो कोई भी दावा करता है (किसी भी मुकदमे, दावे या अन्य कार्रवाई को दर्ज करके) आरोप लगाता है (ए) प्रत्यक्ष, अप्रत्यक्ष, या अंशदायी उल्लंघन या किसी पेटेंट का उल्लंघन करने के लिए प्रेरित करता है : (i) फेसबुक या उसकी किसी अनुषंगी या संबद्ध कंपनी द्वारा, चाहे ऐसा दावा सॉफ़्टवेयर से संबंधित हो या नहीं, (ii) किसी भी पक्ष द्वारा यदि ऐसा दावा पूर्ण रूप से या आंशिक रूप से फेसबुक के किसी सॉफ़्टवेयर, उत्पाद या सेवा से उत्पन्न होता है या इसकी कोई सहायक या सहयोगी, चाहे ऐसा दावा सॉफ़्टवेयर से संबंधित है या नहीं, या (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
 * जावास्क्रिप्ट पुस्तकालयों की तुलना
 * वेब घटक