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

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

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

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

आयात प्रतिक्रिया  'प्रतिक्रिया' से 'प्रतिक्रिया-डोम/ग्राहक' से प्रतिक्रिया आयात करें । const ग्रीटिंग  =    =>  { वापसी (          < div  className = "हैलो-वर्ल्ड" >              हैलो, दुनिया !< / h1 >  ) ; }; const ऐप  =    =>  { वापसी < ग्रीटिंग  /> ; }; कॉन्स्ट रूट  =  रिएक्टडॉम । createRoot ( दस्तावेज़ । getElementById ( 'रूट' )); जड़ । रेंडर (     < React । StrictMode >          < App  />      < /React.StrictMode>  ); नीचे दिए गए HTML दस्तावेज़ के आधार पर।

<वाक्यविन्यास लैंग = html>

<!DOCTYPE html>

<एचटीएमएल लैंग = एन>

<सिर> <मेटा वर्णसेट = utf-8 /> प्रतिक्रिया ऐप 

 इस ऐप को चलाने के लिए आपको जावास्क्रिप्ट सक्षम करने की आवश्यकता है।  

  ई> कार्य एक प्रतिक्रिया घटक है जो प्रसिद्ध परिचयात्मक हैलो, दुनिया को प्रदर्शित करता है! कार्यक्रम नमस्कार दुनिया।

जब एक वेब ब्राउज़र में प्रदर्शित किया जाता है, तो परिणाम इसका प्रतिपादन होगा।

<वाक्यविन्यास लैंग = html>  हैलो, दुनिया! 

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

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

<वाक्यविन्यास लैंग = जावास्क्रिप्ट>

प्रतिक्रिया से प्रतिक्रिया आयात करें

./Tool से उपकरण आयात करें;

कास्ट उदाहरण = => { वापस करना (   <>              <उपकरण का नाम = गुलशन />      ); }; निर्यात डिफ़ॉल्ट उदाहरण ;



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

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

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

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

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

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

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

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


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

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

वर्ग-आधारित घटक
कक्षा-आधारित घटकों को ईसीएमए स्क्रिप्ट कक्षाओं का उपयोग करके घोषित किया जाता है।

<वाक्यविन्यास प्रकाश लैंग = जेएस लाइन = 1>

वर्ग ParentComponent React.Component का विस्तार करता है { राज्य = {रंग: 'हरा'}; प्रदान करना { वापस करना (         ); } } 

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

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

यह सीएसएस शैली, पृष्ठ के लिए लेआउट और पूरे पृष्ठ के लिए रेंडरिंग के पुनर्गणना के प्रयास को बचाता है।

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



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


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

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

जेएसएक्स कोड का एक उदाहरण:

<वाक्यविन्यास लैंग = डार्ट>

वर्ग ऐप React.Component { का विस्तार करता है प्रदान करना { वापस करना (     <दिव>        शीर्षक         सामग्री         फुटर     ); } } 

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

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

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

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

कॉन्स्ट एक्सप्रेस = आवश्यकता ('एक्सप्रेस')

कॉन्स्ट प्रतिक्रिया = आवश्यकता ('प्रतिक्रिया')

const {renderToString} = आवश्यकता ('प्रतिक्रिया-डोम/सर्वर');

कॉन्स्ट ऐप = एक्सप्रेस ;

app.get('/', (req, res) => { const html = रेंडरटॉस्ट्रिंग (<MyApp />);  res.send (` <!डॉक्टर टाइप एचटीएमएल> <एचटीएमएल>  <div id= रूट >${html} <स्क्रिप्ट src= /bundle.js > </शरीर> `); });

app.listen (3000, => {  कंसोल.लॉग ('सर्वर पोर्ट 3000 पर सुन रहा है'); });

</वाक्यविन्यास हाइलाइट>

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

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

फ्लक्स को पर्यवेक्षक पैटर्न का एक प्रकार माना जा सकता है।

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

इस पैटर्न को कभी-कभी गुणों के प्रवाह के रूप में व्यक्त किया जाता है, क्रियाएं ऊपर की ओर प्रवाहित होती हैं। फ्लक्स के कई कार्यान्वयन इसकी स्थापना के बाद से बनाए गए हैं, शायद सबसे प्रसिद्ध 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
 * जावास्क्रिप्ट पुस्तकालयों की तुलना
 * वेब घटक