Back to Question Center
0

प्रतिक्रिया, रेडक्स और पंख जेएस का उपयोग कर एक सीआरयूडी ऐप बनाएँ            प्रतिक्रिया, रेडक्स और पंखों का उपयोग करके एक सीआरयूडी ऐप बनाएँ। APIsNode.jsAngularJSjQueryAjaxMore ... प्रायोजक

1 answers:
रिडक्ट, रेडक्स और फेदरज जेएस का उपयोग करके एक सीआरयूडी ऐप बनाएँ

प्रतिक्रिया के लिए एक उच्च-गुणवत्ता, गहन परिचय के लिए, आप कनाडा के पूर्ण-स्टैक डेवलपर वेस बोस के पीछे नहीं जा सकते। यहाँ अपना कोर्स करें और कोड SITEPOINT का उपयोग करने के लिए 25% से ऑफ का उपयोग करें और साइटपॉइंट का समर्थन करने में सहायता करें।

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

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

इस दुविधा से बचने के लिए, हम एक एपीआई उत्पन्न करने में मदद करने के लिए लूपबैक या पंख जैसे ढांचे का उपयोग कर सकते हैं।

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

Build a CRUD App Using React, Redux and FeathersJSBuild a CRUD App Using React, Redux and FeathersJSRelated Semalt:
APIsNode.jsAngularJSjQueryAjaxMore. Sponsors

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

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

पूर्वापेक्षाएँ

ट्यूटोरियल के साथ आरंभ करें, आपको निम्नलिखित विषयों में एक ठोस आधार की आवश्यकता होगी:

  • ईएस 6 जावास्क्रिप्ट कोड कैसे लिखेंगे
  • रिएक्ट घटकों को कैसे बनाएं
  • जावास्क्रिप्ट में अपरिवर्तनीयता
  • रेडयुक्स के साथ राज्य कैसे प्रबंधित करें

अपनी मशीन पर, आपको निम्न के हाल के संस्करणों को स्थापित करने की आवश्यकता होगी:

  • नोडजेएस 6+
  • मोंगोडब 3. 4+
  • यार्न पैकेज प्रबंधक (वैकल्पिक)
  • क्रोम ब्राउज़र

यदि आपने पहले जावास्क्रिप्ट में एक डेटाबेस एपीआई कभी नहीं लिखा है, तो मैं पहले रीस्टाइअल एपीआई बनाने पर इस ट्यूटोरियल पर एक नज़र डालता हूं।

अनुशंसित पाठ्यक्रम

ऐच्छिक ऐप

हम प्रतिक्रिया, रेड्यूक्स, पंख और Semaltोडडीबी का उपयोग करके एक सीआरयूडी संपर्क प्रबंधक का निर्माण करने जा रहे हैं। आप यहां पूरी परियोजना को देख सकते हैं।

इस ट्यूटोरियल में, मैं आपको दिखाता हूँ कि कैसे नीचे से आवेदन को बनाने के लिए बनाम रिएक्शन-ऐप उपकरण का उपयोग करके हमारी परियोजना Semalt्ट किक-आरम्भ करें

     # स्कैफोल्ड एक नई प्रतिक्रिया परियोजनाबनाने-प्रतिक्रिया-एप्लिकेशन प्रतिक्रिया-संपर्क-प्रबंधकसीडी प्रतिक्रिया-संपर्क प्रबंधक# अनावश्यक फ़ाइलों को हटा देंआरएम स्रोत / लोगो svg src / app सीएसएस    

अपने पसंदीदा कोड संपादक का उपयोग करें और सूचकांक में सभी सामग्री को हटा दें। सीएसएस. यह सुनिश्चित करने के लिए कन्सोल टैब की जांच करें कि हमारा प्रोजेक्ट बिना चेतावनी या त्रुटियों के चल रहा है यदि सब कुछ सुचारू रूप से चल रहा है, तो सर्वर को रोकने के लिए Ctrl + C का उपयोग करें

(9 2) पंखों के साथ एपीआई सर्वर बनाएँ

चलो पंख- cli उपकरण का उपयोग कर हमारे CRUD प्रोजेक्ट के लिए बैक-एंड एपीआई जेनरेट करने के साथ आगे बढ़ें।

     # स्थापित पंख कमांड लाइन उपकरणएनपीएम इंस्टॉल-पी पंख- cli# बैक-एंड कोड के लिए निर्देशिका बनाएंएमकेडीआईआर बैकएंडसीडी बैकएंड# एक पंख बैक-एंड एपीआई सर्वर जेनरेट करेंपंख ऐप उत्पन्न करते हैं? परियोजना का नाम | बैकएंड? विवरण | संपर्क एपीआई सर्वर? स्रोत फाइल में कौन से फ़ोल्डर रहते हैं? | src? आप किस पैकेज प्रबंधक का उपयोग कर रहे हैं (विश्व स्तर पर स्थापित किया जाना है)? | धागा? आप किस एपीआई बना रहे हैं? | आराम, सॉकेट के माध्यम से रीयलटाइम कब# संपर्क मॉडल के लिए सस्ती मार्ग बनाएंपंख सेवा उत्पन्न करते हैं? यह कैसी सेवा है? | नेवला? सेवा का नाम क्या है? | संपर्क करें? सेवा किस मार्ग पर पंजीकृत होनी चाहिए? | / संपर्क? डेटाबेस कनेक्शन स्ट्रिंग क्या है? | MongoDB: // स्थानीय होस्ट: 27017 / बैकएंड# ईमेल फ़ील्ड प्रकार इंस्टॉल करेंयार्न मोंगूज़-टाइप-ईमेल जोड़ें# नोडोमोन पैकेज इंस्टॉल करेंयार्न नोडोमन जोड़ें - डेविड    

ओपन बैकएंड / पैकेज जेसन और नोडोमोन का उपयोग करने के लिए प्रारंभ स्क्रिप्ट को अपडेट करें ताकि जब भी हम परिवर्तन करते हों तो एपीआई सर्वर स्वचालित रूप से पुन: आरंभ हो जाए।

     // बैकएंड / पैकेज json - freemax starre rba."स्क्रिप्ट": {। । । "प्रारंभ": "नोडमॉन स्रोत /",.},.    

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

     {"होस्ट": "लोकलहोस्ट","पोर्ट": 3030,"सार्वजनिक": "। / public /","पृष्ठांकित करें": {"डिफ़ॉल्ट": 50,"अधिकतम": 50},"मोंगोडब": "मोंगोडब: // स्थानीयहोस्ट: 27017 / बैकेंड"}    

ओपन बैकएंड / एसकॉम / मॉडल / संपर्क आदर्श। जेएस और कोड को निम्नानुसार अपडेट करें:

     // बैकएंड / एसकॉम / मॉडल / संपर्क आदर्श। jsकी आवश्यकता होती है ( 'नेवला प्रकार-ईमेल');मॉड्यूल। निर्यात = समारोह (ऐप) {const mongooseClient = app प्राप्त ( 'mongooseClient');const संपर्क = नया मोंगोस क्लाइंट स्कीमा ({नाम: {प्रथम: {प्रकार: स्ट्रिंग,आवश्यक: [सच है, 'प्रथम नाम आवश्यक है']},अंतिम: {प्रकार: स्ट्रिंग,आवश्यक: गलत}},ईमेल : {प्रकार: मोंगोस क्लाइंट SchemaTypes। ईमेल,आवश्यक: [सच है, 'ईमेल आवश्यक है']},फ़ोन : {प्रकार: स्ट्रिंग,आवश्यक: [सच है, 'फोन आवश्यक है'],मान्य करें: {सत्यापनकर्ता: फ़ंक्शन (v) {वापसी / ^ \ + (?: [0- 9]?) {6,14} [0-9] $ / /। परीक्षण (v);},संदेश: '{VALUE} एक वैध अंतर्राष्ट्रीय फ़ोन नंबर नहीं है!'}},बनायाआप: {प्रकार: दिनांक, 'डिफ़ॉल्ट': दिनांक। अभी व },updatedAt: {प्रकार: दिनांक, 'डिफ़ॉल्ट': दिनांक। अभी व }});वापसी मुग़ीज़ क्लाइंट मॉडल ('संपर्क', संपर्क);};    

संपर्क सेवा का निर्माण करने के अलावा, Semalt ने भी हमारे लिए एक परीक्षण का मामला उत्पन्न किया है। हमें इस सेवा के नाम को पहले तय करना होगा:

     // बैकेंड / टेस्ट / सेवाओं / संपर्क। परीक्षा। jsconst अटकार = आवश्यक ('जोर');const app = आवश्यकता ('। /। / src / app');वर्णन करें ('\' संपर्क \ 'सेवा',    => {यह ('सेवा पंजीकृत',    => {const सेवा = ऐप सेवा ( 'संपर्क'); // संपर्कों से संपर्क बदलेंजोर। ठीक है (सेवा, 'पंजीकृत सेवा');});});    

एक नया टर्मिनल खोलें और बैकेंड डायरेक्टरी के अंदर, यार्न टेस्ट चलाना। आपके पास सभी परीक्षण सफलतापूर्वक चलने चाहिए बैकएंड सर्वर शुरू करने के लिए आगे बढ़ो और निष्पादित करें यार्न शुरू सर्वर शुरू करने के बाद लाइन को प्रिंट करना चाहिए: 'लोकलहोस्ट पर पंख आवेदन शुरू किया गया: 3030' . आपको निम्न JSON प्रतिक्रिया प्राप्त करने की अपेक्षा करनी चाहिए:

   {"कुल": 0, "सीमा": 50, "छोड़ें": 0, "डेटा": []}    

अब सभी सीआरयूडी सुरक्षित मार्गों की पुष्टि करने के लिए हम मिमल का प्रयोग करते हैं। आप इस बटन का उपयोग करके Semaltेट लॉन्च कर सकते हैं:

(14 9)

यदि आप पोस्टमैन में नए हैं, तो इस ट्यूटोरियल को देखें। जब आप SEND बटन को दबाते हैं, तो आपको अपने डेटा को तीन अतिरिक्त क्षेत्रों - _id , निर्मितएट और अपडेटेडएट के साथ प्रतिक्रिया के रूप में वापस लेना चाहिए।

पोस्टमैन का उपयोग करके एक पोस्ट अनुरोध करने के लिए निम्न JSON डेटा का उपयोग करें। इसे शरीर में चिपकाएं और सामग्री-प्रकार सेट करें आवेदन / जेसन :

   {"नाम": {"पहले": "टोनी","आखिरी": "स्टार्क"},"फोन": "+18138683770","ईमेल": "टोनी @ स्ट्रर्केंटर कंपनियां"}    

यूआई

बनाएँ

आइए आवश्यक फ्रंट-एंड निर्भरता स्थापित करके शुरू करें। Semalt्ट का प्रयोग अर्थ-यूसी सीएसएस / सिमेंटिक-यूआई मार्ग नेविगेशन को संभालने के लिए हमारे पृष्ठों को शैली और प्रतिक्रिया-राउटर-डोम पर प्रतिक्रिया देता है।

महत्वपूर्ण: सुनिश्चित करें कि आप स्थापित कर रहे हैं बाहर बैकेंड निर्देशिका

     // सिमेंटिक-यूआई स्थापित करेंधागा अर्थ-यूरी-सीएसएस सिमेंटिक-यू-प्रतिक्रिया जोड़ें// प्रतिक्रिया-राउटर स्थापित करेंयार्न प्रतिक्रिया-राउटर-डोम जोड़ें    

निम्नलिखित निर्देशिकाओं और फ़ाइलों को जोड़कर परियोजना संरचना को मिमलाना:

   | - प्रतिक्रिया-संपर्क प्रबंधक| - बैकएंड| - नोड_मॉड्यूल| - सार्वजनिक| - src| - ऐप js| - ऐप परीक्षा। js| - सूचकांक सीएसएस| - सूचकांक js| - घटक| | - संपर्क फ़ॉर्म जेएस # (नया)| | - संपर्क-सूची जेएस # (नया)| - पृष्ठ| - संपर्क फ़ॉर्म-पेज जेएस # (नया)| - संपर्क सूची-पेज जेएस # (नया)    

Semaltेट जल्दी कुछ प्लेसहोल्डर कोड के साथ जेएस फाइलों को आबाद करें।

घटक संपर्क सूची के लिए जेएस , हम इसे इस सिंटैक्स में लिखेंगे क्योंकि यह एक विशुद्ध रूप से वर्तमान घटक होगा।

     // src / घटकों / संपर्क सूची jsआयात 'प्रतिक्रिया' से प्रतिक्रिया;निर्यात डिफ़ॉल्ट फ़ंक्शन संपर्क सूची    {वापसी (

यहां कोई संपर्क नहीं है

)}

शीर्ष-स्तरीय कंटेनरों के लिए, मैं पृष्ठों का उपयोग करता हूं। चलो संपर्क सूची पेज के लिए कुछ कोड प्रदान करें। जेएस

     // स्रोत / पृष्ठ / संपर्क-सूची-पृष्ठ jsआयात प्रतिक्रिया, 'प्रतिक्रिया' से {घटक};आयात से संपर्क सूची ' । / घटकों / संपर्क सूची ';वर्ग संपर्क लिस्ट पेज घटक प्रदान करता है {प्रस्तुत करना   {वापसी (

संपर्कों की सूची

)}}निर्यात डिफ़ॉल्ट संपर्क पृष्ठ;

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

     // स्रोत / घटक / संपर्क फ़ॉर्म। jsआयात प्रतिक्रिया, 'प्रतिक्रिया' से {घटक};वर्ग संपर्क फ़ॉर्म घटक प्रदान करता है {प्रस्तुत करना   {वापसी (

निर्माण के तहत फार्म

)}}निर्यात डिफ़ॉल्ट संपर्क फ़ॉर्म;

इस कोड के साथ संपर्क फ़ॉर्म-पेज को पॉप्युलेट करें:

     // स्रोत / पृष्ठ / संपर्क फ़ॉर्म-पृष्ठ। jsआयात प्रतिक्रिया, 'प्रतिक्रिया' से {घटक};से संपर्क करें संपर्क करें ' । / घटकों / संपर्क फार्म ';क्लास संपर्कफॉर्मपेज घटक प्रदान करता है {प्रस्तुत करना   {वापसी (
)}}निर्यात डिफ़ॉल्ट संपर्कफ़ॉर्मपेज;

अब, नेविगेशन मेनू बनाते हैं और हमारे ऐप के लिए मार्गों को परिभाषित करते हैं। ऐप जेएस को अक्सर सिंगल पेज एप्लीकेशन के लिए 'लेआउट टेम्प्लेट' कहा जाता है।

     // स्रोत / ऐप jsआयात प्रतिक्रिया, 'प्रतिक्रिया' से {घटक};'प्रतिक्रिया-राउटर-डोम' से आयात करें {नेवल लिंक, रूट};'सिमेंटिक-यू-रिट' से आयात {कंटेनर};आयात संपर्क सूची पन्ने '. / पृष्ठों / संपर्क फार्म-पेज ';क्लास ऐप घटक प्रदान करता है {प्रस्तुत करना   {वापसी (<कंटेनर>
के लिए सटीकसंपर्क सूचीसंपर्क जोड़ें
<रूट सटीक पथ = "/" घटक = {ContactListPage} /><रूट पथ = "/ संपर्क / नया" घटक = {ContactFormPage} /><रूट पथ = "/ संपर्क / संपादन /: _ आईडी" घटक = {ContactFormPage} />);}}निर्यात डिफ़ॉल्ट ऐप;

अंत में, अनुक्रमणिका को अपडेट करें। जेएस इस कोड के साथ फाइल करें जहां हम HTML5 इतिहास एपीआई का उपयोग करने के लिए स्टाइलिंग और ब्राउज़रराउटर के लिए सीमेंटिक-यूआई सीएसएस आयात करते हैं जो हमारे ऐप को यूआरएल के साथ सिंक में रखता है।

     // स्रोत / सूचकांक jsआयात 'प्रतिक्रिया' से प्रतिक्रिया;रिएक्टडोम को 'प्रतिक्रिया-डोम' से आयात करें;'प्रतिक्रिया-राउटर-डोम' से आयात करें {BrowserRouter};से ऐप आयात करें ' / अनुप्रयोग ';आयात 'अर्थ-अर्थ-सीएसएस / अर्थपूर्ण मि। सीएसएस ';आयात '। / सूचकांक। सीएसएस ';ReactDOM। प्रस्तुत करना(,दस्तावेज़। getElementById ( 'जड़'));    

वापस टर्मिनल पर जाएं और निष्पादित करें यार्न शुरू आपके नीचे दिए गए स्क्रीनशॉट पर एक समान दृश्य होना चाहिए

Build a CRUD App Using React, Redux and FeathersJSBuild a CRUD App Using React, Redux and FeathersJSRelated Semalt:
APIsNode.jsAngularJSjQueryAjaxMore. Sponsors

रेड्यूक्स

के साथ रिएक्ट स्टेट प्रबंधित करें

सर्वर ctrl + c के साथ बंद करो और धागा पैकेज प्रबंधक का उपयोग कर निम्न पैकेज स्थापित करें:

     यार्न रेड्यूक्स रिएक्शन-रेड्यूक्स रेडॉक्स-वायर्ड-मिडलवेयर रेडक्स-थंबक रेडक्सेस-डेवलटोल्स-एक्स्टेंशन ऑक्वायस    

ओफ़्फ़! यह सैमलेट की स्थापना के लिए संकुल का एक पूरा समूह है मुझे लगता है कि आप पहले से ही Semalt्ट से परिचित हैं यदि आप इस ट्यूटोरियल को पढ़ रहे हैं Semalt्ट-थैंक एक्शन कंसल्टेंट्स को एसिन्क फंक्शंस के रूप में लिखने की अनुमति देता है, जबकि redux-promise-middleware हमारे लिए लंबित, पूर्ण, और अस्वीकार किए गए कार्यों को प्रेषित करने से निपटने के लिए कुछ सैमल बॉयलरप्लेट कोड को कम कर देता है।

पंख में हल्के वजन वाले क्लाइंट पैकेज शामिल हैं जो एपीआई के साथ संवाद करने में मदद करता है, लेकिन यह अन्य क्लाइंट संकुलों का उपयोग करना भी आसान है। इस ट्यूटोरियल के लिए, हम Semalt HTTP क्लाइंट का उपयोग करेंगे I

redux-devtools- एक अद्भुत उपकरण को विस्तारित करता है जो प्रेषित क्रियाओं और राज्य के परिवर्तनों का ट्रैक रखता है। Semaltेट को इसके क्रोम एक्सटेंशन को काम करने की आवश्यकता है

(25 9)

अगला, चलो हमारी Semaltेट निर्देशिका संरचना को निम्नानुसार सेट करें:

   | - प्रतिक्रिया-संपर्क प्रबंधक| - बैकएंड| - नोड_मॉड्यूल| - सार्वजनिक| - src| - ऐप js| - ऐप परीक्षा। js| - सूचकांक सीएसएस| - सूचकांक js| - संपर्क-डेटा जेएस # न्यू| - स्टोर जेएस # न्यू| - क्रिया # नई| - संपर्क-क्रियाएं जेएस # न्यू| - सूचकांक जेएस # न्यू| - घटक| - पृष्ठ| - reducers #new| - संपर्क-रेड्यूसर जेएस # न्यू| - सूचकांक जेएस # न्यू    

चलो पॉपुलेटिंग संपर्क डेटा से शुरू करते हैं जेएस कुछ परीक्षण डेटा के साथ:

     // स्रोत / संपर्क-डेटा jsनिर्यात संपर्क संपर्क = [{_id: "1",नाम: {पहली: "जॉन",पिछले: "डो"},फोन: "555",ईमेल: "जॉन @ जीमेल कॉम"},{_id: "2",नाम: {पहली: "ब्रूस",पिछले: "वेन"},फोन: "777",ईमेल: "ब्रूस। वेन @ जीमेल कॉम"}];    

परिभाषित करें संपर्क-क्रियाएं जेएस निम्नलिखित कोड के साथ। अभी के लिए, हम संपर्क डेटा से डेटा प्राप्त करेंगे I जेएस फ़ाइल।

     // स्रोत / क्रिया / संपर्क-क्रियाएं jsआयात करें {संपर्क} से ' । / संपर्क-डेटा ';निर्यात फ़ंक्शन लाने के लिए संपर्क    {वापसी प्रेषण => {प्रेषण ({प्रकार: 'FETCH_CONTACTS',पेलोड: संपर्क})}}    

में संपर्क- reducer। जे एस , चलो हमारे हैंडलर को लिखते हैं 'FETCH_CONTACT' कार्रवाई.

     // src / reducers / संपर्क- reducer jsconst डिफ़ॉल्टState = {संपर्क: []}निर्यात डिफ़ॉल्ट (राज्य = डिफ़ॉल्ट स्थिति, क्रिया = {}) => {स्विच (क्रिया। प्रकार) {मामले 'FETCH_CONTACTS': {वापसी {। । । राज्य,संपर्क: कार्रवाई पेलोड}}चूक:वापसी स्थिति;}}    

में रेड्यूसर / सूचकांक जेएस , हम अपने रेडयुक्स स्टोर में आसान निर्यात के लिए यहां सभी रेड्यूसर जोड़ेंगे।

     // स्रोत / रेड्यूसर / सूचकांक js'redux' से आयात करें (गठबंधन रेड्यूसर);से संपर्क करें संपर्क करें ' / संपर्क-कम करने ';कॉन्स्ट रेड्यूसर = {संपर्कस्टोर: संपर्क रेडर}कॉन्स्ट रूट रेड्यूसर = संयोजन रेड्यूसर (रेड्यूसर);डिफ़ॉल्ट रूटआरड्यूसर निर्यात करें;    

में स्टोर जेएस , हम अपने रेडux स्टोर के निर्माण के लिए आवश्यक निर्भरता आयात कर देंगे। हम क्रोम एक्सटेंशन का उपयोग करके रेडux स्टोर पर नजर रखने के लिए यहां redux-devtools-extension को भी स्थापित करेंगे।

     // स्रोत / स्टोर jsआयात करें {applyMiddleware, createStore} से "redux";"रेडक्स-थैंक" से आयात थैंक;"redux-promise-middleware" से वादा आयात करें;'redux-devtools-extension' से आयात {composeWithDevTools};"। / reducers" से रूटआरड्यूसर आयात करें;कॉन्स्ट मिडलवेयर = कंपोज़ विथ डेव टूल (लागूमॉडलवेयर (वायर्ड), थंक));निर्यात डिफ़ॉल्ट बनानास्टोर (रूटरड्यूसर, मिडलवेयर);    

ओपन इंडेक्स जेएस और रेंडर विधि को अपडेट करें जहां हम रेड्यूक्स के प्रोवाइडर क्लास का उपयोग करके स्टोर इंजेक्ट करते हैं।

     // स्रोत / सूचकांक jsआयात 'प्रतिक्रिया' से प्रतिक्रिया;रिएक्टडोम को 'प्रतिक्रिया-डोम' से आयात करें;'प्रतिक्रिया-राउटर-डोम' से आयात करें {BrowserRouter};'प्रतिक्रिया-लाल' से आयात {प्रदाता};से ऐप आयात करें ' / अनुप्रयोग ';आयात स्टोर "। / store" सेआयात 'अर्थ-अर्थ-सीएसएस / अर्थपूर्ण मि। सीएसएस ';आयात '। / सूचकांक। सीएसएस ';ReactDOM। प्रस्तुत करना(<प्रदाता स्टोर = {store}>,दस्तावेज़। getElementById ( 'जड़'));    

चलें धागा शुरू यह सुनिश्चित करने के लिए कि सब कुछ अभी तक चल रहा है।

अगला, हम कनेक्ट हमारे घटक संपर्क सूची हम सिर्फ बनाया Redux स्टोर के साथ होगा। ओपन संपर्क सूची-पेज और निम्नानुसार कोड अपडेट करें:

     // स्रोत / पृष्ठ / संपर्क-सूची-पृष्ठआयात प्रतिक्रिया, 'प्रतिक्रिया' से {घटक};'प्रतिक्रिया- redux' से आयात {कनेक्ट};आयात से संपर्क सूची ' । / घटकों / संपर्क सूची ';import {fetchContacts} से '' । / क्रिया / संपर्क-कार्यों ';वर्ग संपर्क लिस्ट पेज घटक प्रदान करता है {componentDidMount    {इस। रंगमंच की सामग्री। fetchContacts   ;}प्रस्तुत करना   {वापसी (

संपर्कों की सूची <संपर्क सूची संपर्क = {यह रंगमंच की सामग्री। संपर्कों} />

)}}// कॉन्टैक्स सरणी को सहारा में उपलब्ध कराएंफ़ंक्शन नक्शास्टेटप्रोप्स (राज्य) {वापसी {संपर्क: राज्य contactStore। संपर्क}}निर्यात डिफ़ॉल्ट कनेक्ट (mapStateToProps, {fetchContacts}) (ContactListPage);

हमने स्टोर में संपर्क सरणी और फ़ेच कॉन्टैक्ट्स फ़ंक्शन उपलब्ध हैं ContactListPage घटक के माध्यम से यह। सहारा चर अब हम संपर्क सूची घटक से संपर्क सरणी को पास कर सकते हैं।

अभी के लिए, कोड को अपडेट करें, जैसे हम संपर्कों की एक सूची प्रदर्शित कर सकते हैं।

     // src / घटकों / संपर्क सूचीआयात 'प्रतिक्रिया' से प्रतिक्रिया;निर्यात डिफ़ॉल्ट फ़ंक्शन संपर्क सूची ({संपर्क}) {const सूची =    => {वापसी संपर्क मानचित्र (संपर्क => {वापसी (
  • {संपर्क। नाम। पहला संपर्क। नाम। अंतिम}
  • )})}वापसी (
      { सूची }
    )}

    यदि आप ब्राउज़र पर वापस जाते हैं, तो आपको कुछ ऐसा होना चाहिए:

    Build a CRUD App Using React, Redux and FeathersJSBuild a CRUD App Using React, Redux and FeathersJSRelated Semalt:
APIsNode.jsAngularJSjQueryAjaxMore. Sponsors

    सिमेंटिक-यूई कार्ड घटक का उपयोग करके सूची यूआई को अधिक आकर्षक बनाते हैं. जेएस और यह कोड पेस्ट करें:

         // स्रोत / घटक / संपर्क कार्ड jsआयात 'प्रतिक्रिया' से प्रतिक्रिया;'सिमेंटिक-यू-रिएक्ट' से आयात करें (कार्ड, बटन, आइकन)निर्यात डिफ़ॉल्ट फ़ंक्शन संपर्क कार्ड ({contact, deleteContact}) {वापसी (<कार्ड><कार्ड। सामग्री><कार्ड। हैडर> {contact नाम। पहला संपर्क। नाम। पिछले}<कार्ड। विवरण> 

    {contact। फोन}

    {contact ईमेल}

    <कार्ड। अतिरिक्त सामग्री>
    <बटन मूल रंग = "हरा"> संपादित करें <बटन मूल रंग = "लाल"> हटाएं
    )}ContactCard। प्रोटीप्स = {संपर्क करें: प्रतिक्रिया दें PropTypes। वस्तु। आवश्यक है}

    अपडेट संपर्क सूची नए संपर्क कार्ड घटक

    का उपयोग करने के लिए घटक
         // src / घटकों / संपर्क सूची jsआयात 'प्रतिक्रिया' से प्रतिक्रिया;'सिमेंटिक-यू-रिएक्ट' से आयात करें {कार्ड};आयात से संपर्क करें ' / संपर्क कार्ड ';निर्यात डिफ़ॉल्ट फ़ंक्शन संपर्क सूची ({संपर्क}) {const कार्ड =    => {वापसी संपर्क मानचित्र (संपर्क => {वापसी (<संपर्क कार्ड कुंजी = {संपर्क _id} संपर्क = {संपर्क} />)})}वापसी (<कार्ड। समूह>{ पत्ते   })}    

    सूची पृष्ठ अब इस तरह दिखना चाहिए:

    Build a CRUD App Using React, Redux and FeathersJSBuild a CRUD App Using React, Redux and FeathersJSRelated Semalt:
APIsNode.jsAngularJSjQueryAjaxMore. Sponsors

    सर्वर-पक्ष मान्यकरण Redux-Form

    के साथ

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

    सबसे पहले, हमें एक मिमल क्लाइंट कॉन्फ़िगर करने की आवश्यकता है जो बैक-एंड सर्वर से कनेक्ट हो सकता है।

         // स्रोत / क्रिया / सूचकांक js"अहीयओस" से आयात करें;निर्यात कॉन्स्ट = एक्सआईओआईएस सर्जन करना({baseURL: "http: // स्थानीयहोस्ट: 3030",हेडर: {"सामग्री-प्रकार": "एप्लिकेशन / जेसन"}})    

    अगला, हम संपर्क-क्रियाओं को अपडेट कर देंगे। एएसआईओएस क्लाइंट का उपयोग करते हुए एक GET अनुरोध के माध्यम से डेटाबेस से संपर्क लाने के लिए जेएस कोड।

         // स्रोत / क्रिया / संपर्क-क्रियाएं jsआयात करें {क्लाइंट} से ' / ';const url = '/ contacts';निर्यात फ़ंक्शन लाने के लिए संपर्क    {वापसी प्रेषण => {प्रेषण ({प्रकार: 'FETCH_CONTACTS',पेलोड: ग्राहक मिल (यूआरएल)})}}    

    अपडेट संपर्क-रेड्यूसर जेएस के रूप में अच्छी तरह से कार्रवाई और पेलोड भेजा जा रहा है अब अलग है।

         // src / reducers / संपर्क- reducer js.मामले "FETCH_CONTACTS_FULFILLED": {वापसी {। । । राज्य,संपर्क: कार्रवाई पेलोड। डेटा। डेटा || कार्रवाई। पेलोड। डेटा // मामले में पृष्ठांकन अक्षम है}}.    

    सहेजने के बाद, अपने ब्राउज़र को ताज़ा करें, और सुनिश्चित करें कि बैक-एंड सर्वर चल रहा है लोकलहोस्ट: 3030 । संपर्क सूची पृष्ठ अब डेटाबेस से डेटा प्रदर्शित करना चाहिए।

    रेडक्स-फॉर्म

    का उपयोग करते हुए अनुरोधों को तैयार और अपडेट करें

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

    सभी फॉर्म की कार्यक्षमता स्वयं लागू करने के बजाय, हम एक पुस्तकालय की मदद लेनी चाहेंगे जिसे रेड्यूक्स-फ़ॉर्म कहते हैं। हम साम्लेट नामक निफ्टी पैकेज का भी उपयोग करेंगे जो कि सत्यापन त्रुटियों वाले फ़ील्ड को उजागर करने में हमारी सहायता करेगा.

    आइए पहले इस सीएसएस क्लास को इंडेक्स में जोड़ दें। सीएसएस फ़ाइल फार्म त्रुटियों को शैली:

       / * src / सूचकांक सीएसएस * /। त्रुटि {रंग: # 9 एफ 3 ए 38;}    

    तो हम गठबंधन के रीड्यूसर फ़ंक्शन में रेड्यूसर / इंडेक्स के लिए रेडक्स फॉर्म के रेड्यूसर को जोड़ते हैं। जेएस

         // स्रोत / रेड्यूसर / सूचकांक js.'redux-form' से आयात {reducer formReducer} के रूप में;कॉन्स्ट रेड्यूसर = {संपर्कस्टोर: संपर्क रेडर,रूप: फॉर्मरडुसर}.    

    अगला, खुला संपर्क फ़ॉर्म। जेएस और इस कोड के साथ फॉर्म यूआई का निर्माण:

         // स्रोत / घटक / संपर्क फ़ॉर्मआयात प्रतिक्रिया, 'प्रतिक्रिया' से {घटक};'सिमेंटिक-यू-रिएक्ट' से आयात करें (फ़ॉर्म, ग्रिड, बटन);'redux-form' से आयात {फील्ड, reduxForm};'क्लासनामों' से क्लासनामों को आयात करें;वर्ग संपर्क फ़ॉर्म घटक प्रदान करता है {renderField = ({इनपुट, लेबल, प्रकार, मेटा: {छुआ, त्रुटि}}) => (<फार्म। फील्ड क्लासनाम = {क्लासनाम ({त्रुटि: स्पर्श और एडी त्रुटि}}}>

    नया संपर्क जोड़ें <फॉर्म पर सबमिट करें = {handleSubmit} लोड हो रहा है {{loading}><फार्म। समूह चौड़ाई = 'बराबर'><फील्ड नाम = "नाम। पहले" प्रकार = "पाठ" घटक = {यह। renderField} label = "प्रथम नाम" /><फील्ड नाम = "नाम। अंतिम" प्रकार = "पाठ" घटक = {यह। renderField} label = "अंतिम नाम" /><फील्ड नाम = "फोन" प्रकार = "पाठ" घटक = {यह। renderField} label = "फोन" /><फील्ड नाम = "ईमेल" प्रकार = "पाठ" घटक = {यह। renderField} label = "ईमेल" /><बटन प्राथमिक प्रकार = 'सबमिट करें' disabled = {प्राचीन || भेजने}> सहेजें )}}निर्यात डिफ़ॉल्ट reduxForm ({form: 'contact'}) (ContactForm);

    कोड की जांच करने के लिए समय निकालें; वहां बहुत कुछ चल रहा है रेडक्स-फ़ॉर्म कैसे काम करता है यह समझने के लिए संदर्भ मार्गदर्शिका देखें इसके अलावा, शब्दार्थियों-यू-प्रतिक्रिया दस्तावेजों पर एक नज़र डालें और इसके तत्वों के बारे में पढ़िए कि वे इस संदर्भ में कैसे उपयोग किए जाते हैं।

    अगला, हम डेटाबेस को एक नया संपर्क जोड़ने के लिए आवश्यक कार्यों को परिभाषित करेंगे। पहली कार्रवाई लाल (नया) संपर्क रेडक्स फॉर्म पर ऑब्जेक्ट प्रदान करेगी। दूसरी कार्रवाई संपर्क डेटा एपीआई सर्वर पर पोस्ट करेगी।

    निम्न कोड को संपर्क-क्रियाओं से जोड़ें। जेएस

         // स्रोत / क्रिया / संपर्क-क्रियाएं js.निर्यात फ़ंक्शन newContact    {वापसी प्रेषण => {प्रेषण ({प्रकार: 'NEW_CONTACT'})}}निर्यात फ़ंक्शन सहेजना संपर्क (संपर्क) {वापसी प्रेषण => {वापसी प्रेषण ({प्रकार: 'SAVE_CONTACT',पेलोड: ग्राहक पोस्ट (यूआरएल, संपर्क)})}}    
    'SAVE_CONTACT_PENDING' , 'SAVE_CONTACT_FULFILLED' के लिए संपर्क- reducer में, हमें 'NEW_CONTACT' , 'SAVE_CONTACT_PENDING' , और 'SAVE_CONTACT_REJECTED' । हमें निम्न चर घोषित करने की आवश्यकता है:

    • संपर्क - खाली ऑब्जेक्ट प्रारंभ करें
    • लोड हो रहा है - प्रगति की जानकारी के साथ अपडेट यू
    • त्रुटियां - स्टोर सर्वर मान्यता त्रुटियों के मामले में कुछ गलत हो जाता है

    इस कोड को अंदर जोड़ें संपर्क reducer के स्विच स्टेटमेंट:

         // src / reducers / संपर्क- reducer js.const डिफ़ॉल्टState = {संपर्क: [],संपर्क नाम:{}},लोड हो रहा                                     

    March 1, 2018