Back to Question Center
0

रेड्यूक्स किंवा नाही: रिचक्ट अॅप्समध्ये स्टेट स्ट्रक्चरिंगची कला            रेड्यूक्स किंवा नाही: रिचार्ज अॅप्समध्ये स्टेट स्ट्रक्चरिंगची कला संबंधित विषय: ES6 रीटेल टॅल्स आणि & मिमल

1 answers:
रेड ककंवा नॉट: रीएक्ट ऍप्स मध्ये स्टेट स्ट्रक्चरिंगची कला

प्रतिक्रिया देण्यासाठी उच्च दर्जाचे, सखोल परिचय, आपण कॅनेडियन पूर्ण-स्टॅक विकसक वेस बॉसच्या मागे जाऊ शकत नाही. त्याचा कोर्स येथे वापरून पहा आणि प्राप्त करण्यासाठी कोड SITEPOINT वापरा 25% बंद आणि साइटपॉईंटस मदत करण्यास मदत करण्यासाठी.

मी सर्वात सामान्य Redux डेव्हलपर्सपैकी एक आहे setState दिशेने द्वेष. सेटस्टेट (1 9) आणि आपल्या सर्व रेडयुक्स स्टोअरमध्ये सर्व माहिती ठेवणे प्रयत्न करीत असताना आम्हाला बरेच लोक (होय, मी आधी हे सापळ्यात अडकवले आहे) - melo 2 replacement coils watt. परंतु, आपल्या अर्जाची जटिलता वाढत असल्याने, हे अनेक आव्हाने निर्माण करते.

या पोस्टमध्ये, Semaltेट आपल्या राज्याचे मॉडेल करण्याच्या विविध धोरणांद्वारे चालते आणि त्यापैकी प्रत्येकचा वापर करता येतो तेव्हा त्यात जा.

प्रारंभ करणे

रेड्यूक्स आपल्या ऍप्लिकेशन स्टेटसाठी सत्याचा एक स्रोत असण्याचे तत्व विकसित करतो. मिमल सीझनचा एक नवीन गेम आता प्रसारण करीत आहे आणि मला खात्री आहे की हे कसे उलगडत आहे हे प्रत्येकाला कळेल. या संकल्पनांना सविस्तर माहिती समजून घेण्यासाठी आम्ही मिमल फॅनच्या पृष्ठाचे मजा गेम तयार करू या.

टीप: मी अॅप चालविण्यासाठी यार्न (1 9) वापरत आहे. आपल्याकडे धागा सेट नसल्यास, यार्न सह एनपीएम (1 9) पुनर्स्थित करा.

रेणुकामातून मूळ इमारत डाउनलोड करून चालवा:

  यार्न इन्स्टॉलधागा धावणे प्रारंभ(1 9)  

आपल्या सूचीतील काही पसंतीचे GoT वर्ण असलेले मूलभूत यादी पृष्ठ आपण पहावे.

टीप: आमच्या अनुप्रयोगास लिहिण्यासाठी क्षुल्लक पद्धतीने बदक रचनेचा वापर करणे. हे अनावश्यक मॉड्यूल आयात कमी करते आणि बर्याच बॉयलरप्लेटवर कमी करते.

रेडयुक्समध्ये परिचय

या लेखाचा व्याप्ती आपल्याला आपले मिल्टल अॅप्स बनविण्यास मदत करणे हा आहे. हे लायब्ररीचे मूलभूत ज्ञान ग्रहण करते. मी मिल्ठु संकल्पनांचे थोडक्यात आढावा देऊ शकेन जे आपणास उर्वरित लेखाचे अधिक चांगले अनुकरण करण्यास मदत करतील. आपण हे कसे कार्य करते हे परिचित असल्यास, हा विभाग वगळण्यासाठी मोकळ्या मनाने

सर्व क्षुल्लक अॅप्स चार महत्वाच्या बांधकामांचा वापर करतातः कृती, रीडर्स, स्टोअर आणि कंटेनर

क्रिया

कृती हे राज्य सुधारण्याचे हेतू आहे. हे एखाद्या नेटवर्क कॉलद्वारे किंवा एखाद्या वापरकर्त्यास बटण क्लिक करून चालना मिळू शकते. क्रिया दोन भाग आहेत:

  1. क्रिया प्रकार . कृती दर्शवणारे एक अद्वितीय ओळखकर्ता.
  2. पेलोड . कारवाईशी संबद्ध असलेला कोणताही मेटाडेटा उदाहरणार्थ, जर आम्ही चित्रपटांची यादी आणण्यासाठी नेटवर्क विनंती केली तर सर्व्हरकडून प्रतिसाद पेलोड असतो.

या उदाहरणासाठी, आम्ही क्रियाकलाप तयार करण्यासाठी redux-actions (1 9) नावाची लायब्ररी वापरणार आहोत.

रेड्यूसर

रेड्यूसर हे एक असे कार्य आहे जे कृती ऐकते आणि नवीन राज्य प्रतिनिधित्व देते.

स्टोअर (5 9)

एखाद्या अर्जास पेजच्या विविध भागांचे प्रतिनिधीत्व करणार्या अनेक रिड्यूसरमध्ये विभागले जाऊ शकते. ए स्टोअर या सर्व गोष्टी एकत्र आणते आणि अॅप स्थिती अखंड ठेवते.

(9 0) कंटेनर (5 9)

कंटेनर घटकांसह आपली अॅप्स स्थिती आणि कृती जोडतात, त्यांना प्रॉप्स म्हणून खाली खेचतात

हे कसे कार्य करते त्याबद्दल सखोल समज प्राप्त करण्यासाठी, मी आपल्याला डॅन Semaltेटद्वारे प्रथम विनामूल्य परिचय मालिका पहाण्यास प्रोत्साहित करतो.

स्प्लिट अॅप डेटा आणि UI स्टेट

सूची पृष्ठ छान आहे, परंतु नावे अशा लोकांसाठी कोणत्याही संदर्भ देत नाहीत जो GoT विश्वासाठी नवीन आहेत. मिमलटाने घटकांचे वर्णन देखील सादर केले:

  // GoTCharacter. जेएसनिर्यात संवेदना अक्षर = ({चरित्र}) => (
{चरित्र नाव}
{character. या समस्येच्या निराकरणासाठी आम्ही तीन वेगवेगळ्या दृष्टिकोन घेऊ शकतो.

सेटस्टेट (1 9) दृष्टिकोण

हे रिटॅकमध्ये साध्य करण्याचा सर्वात सोपा मार्ग म्हणजे घटकांमधील डेटा संग्रहित करण्यासाठी सेटस्टेट (1 9) वापरणे:

  // GoTCharacter. जेएसनिर्यात वर्ग StatefulCharacterRow घटक विस्तारित {कन्स्ट्रक्टर    {सुपर   ;हे. राज्य = {show_description: खोटे}}रेंडर करा    {const {character} = हे. रंगभूमीवरील सामानसूमानपरतावा ( );}};(1 9)  

रेड्यूक्स दृष्टिकोण

सेटेस्टेट (1 9) वापरणे जोपर्यंत आम्ही ज्या पद्धतीने कार्य करीत आहोत ते केवळ घटकांसाठी स्थानिक आहे. जर, उदाहरणार्थ, आम्ही एक "सर्व विस्तृत करा" फंक्शन लावू इच्छितो, तर हे केवळ प्रतिक्रियेसह हाताळणं कठीण होईल.

आपण हे कसे रेडयुक्समध्ये हलवू शकतो ते पाहूया:

  // फ्लिक डक. जेएस// .एक्सपोर्ट कॉन्स्ट टॉवेलखर्च Comment = createAction (FlixActions. TOGGLE_CHARACTER_DESCRIPTION, (वर्ण) => ({अक्षर}));निर्यात डीफॉल्ट (वर्तमान_स्टेट, क्रिया) => {const state = current_state || default_state;स्विच (क्रिया. प्रकार) {केस फ्लिक्स ऍक्शन TOGGLE_CHARACTER_DESCRIPTION:परत { राज्य, वर्ण: राज्य. वर्ण नकाशा (char => {if (char id === क्रिया. पेलोड वर्ण. id) {परत { char, show_description:! char show_description};}परत येणे;})}डीफॉल्टःपरत राज्य}}(1 9)  
  // GoTCharactersContainer जेएस'react-redux' मधून import {connect};गोटेकरक्टर्स आयात करा ' / GoTCharacters ';import {toggleCharacterDescription} वरून '. / फ्लिककॉक ';const मॅपस्टेटटॉप्रॉप = (राज्य) => ({स्थिती: झटका});const mapDispatchToProps = (प्रेषण) => ({टॉगलकॅरक्टरडाउसेप्शन: (डेटा) => प्रेषण (टॉगलकॅरएक्चर डेस्क्रिप्शन (डेटा))});निर्यात डीफॉल्ट कनेक्ट (mapStateToProps, mapDispatchToProps) (GoTCharacters);(1 9)  
  // GoTCharacters जेएसconst GoTCharacters = ({वर्ण, टॉगलक्लार्कडाकार्ड}} => {परत (
{वर्ण नकाशा (चार => (<अक्षररावावर्ण = {कोष}टॉगल वर्णदर्शक = {टॉगल करिअर वर्णन}की = {कोशिका आयडी} />))}
);};export const वर्णरेखा = ({वर्ण, टॉगल करिअरडिस्क्रिप्शन}) => (
{चरित्र नाव}
{चरित्र. show_description? 'संकुचित': 'विस्तृत करा'}{चरित्र. show_description &&
{character वर्णन}
}
);(1 9)

कॅमेरा ऑब्जेक्टच्या आत वर्णन फिल्डची स्थिती संमिश्र ठेवली. आता आपले राज्य असे दिसेल:

  राज्य = {वर्ण: [{id: 1,नाव: "एडवर्ड नेड स्टार्क",घर: "पूर्ण",वर्णन: "हिंटरफेलचे लॉर्ड - उत्तर वार्डन - राजाचा हात - कॅटलिनशी विवाह केला (तुली) स्टार्क",प्रतिमासुफिक्स: "एडवर्ड-स्टार्क",विकीसुफिक्स: "एडवर्ड_स्टारक",show_description: सत्य आहे},{id: 2,नाव: "बेंजाइन स्टार्क",घर: "पूर्ण",वर्णन: "एडवर्ड स्टार्क चे भाऊ - नाईट वॉचचे पहिले रेनर",प्रतिमासुफिक्स: "बेंजेन-स्टार्क",विकीसुफिक्स: "बेंजाइन_स्टारक",show_description: खोटे}]}(1 9)  

जेव्हा हे रेडयुक्सने सुरूवात करत असेल तेव्हा बरेच डेव्हलपर्सचे हे एक सामान्य पॅटर्न आहे.

आतापर्यंत, आम्ही GoT च्या पहिल्या अध्यायातील वर्णांशी व्यवहार करतोय, आणि विश्वातील संपूर्ण जग खूप मोठे होणार आहे. हे करताना, आमचे अॅप धीमे होईल एक पंक्ती अद्यतनित करण्यासाठी 1000 वर्णांमधून मिमल लूपिंग

Semaltेट मोठ्या डेटासेटसाठी हे कसे मोजते ते पहा:

  // फ्लिक डक. जेएस// .केस फ्लिक्स ऍक्शन TOGGLE_CHARACTER_DESCRIPTION:const {character} = कृती पेलोड;परत { राज्य,वर्ण_दर्शनी_करण: { राज्य. वर्ण_दर्शनी_करण,[वर्ण. आयडी]:! राज्य. वर्ण_दर्शनी [वर्ण आयडी]}}// .(1 9)  

आणि गोएक्रारॅक्टर्स जेएस (1 9):

  निर्यातसंस्था अक्षर = ({वर्ण, अक्षर_दर्शनी_करण, टॉगल अक्षरदर्शवा}) => (
{चरित्र नाव}
{character_ show_description [अक्षर आयडी]? 'संकुचित': 'विस्तृत करा'}{character_ show_description [अक्षर आयडी] &&
{character वर्णन}
}
);(1 9)

जेव्हा वापरकर्ता विस्तृत लिंकवर क्लिक करतो, तेव्हा आम्ही वर्ण_शक्ति_करणे (1 9) वर्तमान वर्ण आयडीसह अद्ययावत करतो. आता राज्य असे दिसत आहे:

  राज्य = {वर्ण: [ ],वर्ण_दर्शनी_करता: {1: खरे,2: चूक}}(1 9)  

आता आम्ही सर्व अक्षरे प्रती लूप न करता UI राज्य अद्यतनित करू शकता.

(17 9) रेडयुक्समध्ये फॉर्म स्टेटचे व्यवस्थापन

फॉर्म स्टेटसचे व्यवस्थापन हे एक अवघड व्यवसाय आहे. सामान्य अनुप्रयोगामध्ये, सादर करताना एकदा फॉर्म डेटाची क्रमवारी करू, आणि ती वैध असेल तर ती सबमिट करा. अन्यथा, आम्ही एक त्रुटी संदेश दर्शवू. समतुल्य, बरोबर?

परंतु, खर्या जगात, आपल्याला फॉर्मसह काही जटिल आंतरक्रिया होतील. फॉर्मवर प्रमाणीकरण त्रुटी असल्यास, आम्हाला पृष्ठाच्या शीर्षस्थानी त्रुटी दर्शविण्याची आवश्यकता असू शकते आम्ही UX च्या आधारावर पृष्ठाच्या इतर भागामध्ये काही घटक अक्षम करण्याची आवश्यकता असू शकते. हे सहसा आपल्या पालकांच्या पालकांच्या पालकांकडून रॅन्डम कॉलबॅक देऊन किंवा प्रत्येक प्रमाणीकरणासह DOM मध्ये हाताळणे देखील शक्य आहे.

आपण हे कसे रेडयुक्ससह कार्यान्वित करूया ते पाहुया:

  // फ्लिक डक. जेएस// ============कॉन्स्ट फ्लिक्स ऍक्शन्स = किमी ({FETCH_CHARACTERS: शून्य,TOGGLE_CHARACTER_DESCRIPTION: शून्य,TOGGLE_CHARACTER_EDIT: शून्य,SYNC_CHARACTER_EDIT_DATA: शून्य,SAVE_CHARACTER_EDIT: शून्य});const default_state = {वर्ण: वर्ण,character_show_description: {},show_character_edit: {},character_edit_form_data: {}};निर्यात कॉन्स्ट टागेल संपादन = ऍक्शन (FlixActions. TOGGLE_CHARACTER_EDIT, (वर्ण) => ({पात्र}));export const syncCharacterEditData = createAction (FlixActions. SYNC_CHARACTER_EDIT_DATA, (वर्ण, फॉर्म_डेटा) => ({वर्ण, फॉर्म_डेटा}));export const editCharacterDetails = createAction (FlixActions. SAVE_CHARACTER_EDIT, (वर्ण) => ({पात्र}));निर्यात डीफॉल्ट (वर्तमान_स्टेट, क्रिया) => {// .स्विच (क्रिया. प्रकार) {// .केस फ्लिक्स ऍक्शन TOGGLE_CHARACTER_EDIT:वर्ण = कृती पेलोड वर्णconst show_character_edit =! स्थिती शो_करटर_एडिट [वर्ण आयडी];परत { राज्य,show_character_edit: { राज्य. show_character_edit,[वर्ण. id]: show_character_edit}, character_edit_form_data: { राज्य. character_edit_form_data,[वर्ण. id]: show_character_edit? { वर्ण}: {}}}केस फ्लिक्स ऍक्शन SYNC_CHARACTER_EDIT_DATA:वर्ण = कृती पेलोड वर्णconst {form_data} = क्रिया पेलोड;परत { राज्य,character_edit_form_data: { राज्य. character_edit_form_data,[वर्ण. आयडी]: { form_data}}}केस फ्लिक्स ऍक्शन. पेलोड वर्णconst edit_form_data = state. वर्ण_एडिट_फोर्म_डेटा [वर्ण आयडी];कॉन्स्ट वर्ण = राज्य. वर्ण नकाशा (char => {if (char id === character id) return { char, नाव: edit_form_data नाव, वर्णन: edit_form_data. वर्णन}परत येणे;});परत { राज्य,वर्ण,show_character_edit: { राज्य. show_character_edit,[वर्ण. आयडी]: खोटे}}// .}}(1 9)  
  // GotCharacters जेएसexport const वर्णरेखा = ({वर्ण, अक्षर_शोध_विशेष, वर्ण_एडिट_फॉर्म_डेटा, शो_चक्रिका_एडिट, टॉगलक्लार्कडाउनस्क्रिप्शन, टॉगलसंपादित करा, संकालनसंभावनासंपादित कराडेटा, संपादनखर्चदर्शवा}} => {const टॉगल संपादनपार्टी = टॉगलसंपादित करा. बांधणी (शून्य, वर्ण);परतावा (
{चरित्र नाव}
{character_ show_description [अक्षर आयडी]? 'संकुचित': 'विस्तृत करा'}{! character_show_description [अक्षर id] && संपादित करा}{character_ show_description [अक्षर आयडी] &&
{character वर्णन}
}{show_character_edit [वर्ण. आयडी] &&<संपादनसंचयीक तपशील वर्ण = {अक्षर}cancelEdit = {toggleEditPartial}syncCharacterEditData = {syncCharacterEditData}editCharacterDetails = {संपादनचौकटप्रदर्शन}edit_data = {character_edit_form_data [वर्ण id]} />}
);}export const editCharacterDetails = ({पात्र, संपादन_डेटा, संकालनसंकेतरएडिटडेटा, संपादनकैक्टरदर्शि, रद्द कराएडिट}) => {const syncFormData = (की, ई) => {const {मूल्य} = ई. currentTarget;syncCharacterEditData (वर्ण, {संपादन_डेटा,[की]: मूल्य});};const saveForm = (e) => {ई. preventDefault ;संपादनखर्चदर्शवा (वर्ण);};परत (
<लेबल> नाव: <लेबल> वर्णन: <मजकूरनाव नाव = 'वर्णन' मूल्य = {edit_data वर्णन} onChange = {syncFormData. बांधणी (नल, 'वर्णन')} />

प्रमाणित प्रमाणीकरणे हाताळण्यासाठी हे प्रमाणित:

  // फ्लिक डक. जेएस// ============export const editCharacterDetails = createAction (FlixActions. VALIDATE_AND_SAVE_CHARACTER_EDIT, (प्रेषण, वर्ण, edit_form_data) => {const त्रुटी = प्रमाणित कराकर्सरफॉर्म (edit_form_data);तर (ऑब्जेक्ट. (त्रुटी) लांबी) {परतीचा प्रेषण (showErrorMessage (वर्ण, त्रुटी));}रिटर्न डिस्पॅच (saveCharacterEdit (character));});export const showErrorMessage = createAction (FlixActions. VALIDATE_CHARACTER_EDIT, (वर्ण, त्रुटी) => ({वर्ण, त्रुटी, hasError: true}));export const savedCharacterEdit = createAction (FlixActions. SAVE_CHARACTER_EDIT, (वर्ण) => ({पात्र}));स्विच (क्रिया. प्रकार) {// .केस फ्लिक्स ऍक्शन VALIDATE_CHARACTER_EDIT:वर्ण = कृती पेलोड वर्णconst {errors, hasError} = कृती पेलोड;परत { राज्य,character_edit_form_errors: { राज्य. character_edit_form_errors,[वर्ण. id]: {त्रुटी, hasError}}}// .}(1 9)  

हे आपण मागील भागात पाहिलेल्या उदाहरणाप्रमाणेच नाही का? अर्धवेळ हे त्या स्वरूपात विशेष आहे का?

यामध्ये उडी मारण्यापूर्वी, रेडक्सचे काम कसे करावे हे समजून घेणे महत्त्वाचे आहे. जेव्हा आपले राज्य बदलेल, आपण वृक्ष एक एकल बिंदू अद्यतनित करू नका. त्याऐवजी, संपूर्ण राज्याचे झाड एका नवीन जागी घेण्यात आले आहे.

फॉर्म स्टेट विशेष आहे, कारण राज्य वृक्ष फारच जलद बदलतात. वापरकर्त्याच्या टाइपिंग स्पीडवर अवलंबून, ती एक समस्या असू शकते. मिमलॅट स्थितीमुळे सर्व नोड्सचा सलोखा निर्माण होतो, जेव्हा वापरकर्ते टाइप करतात तेव्हा थोडा मोठा अंतर असू शकतो. काही शंभर घटकांसह एका मोठ्या पृष्ठाशी व्यवहार करताना हे खूप लक्षवेधक होऊ शकते.

क्षेपणास्त्र पहा की हे कसे मोठे परिवर्तन न करता आम्ही ते पुन्हा तयार करू शकतो:

  निर्यात वर्ग राज्यपूर्णसंहर रोअर घटक विस्तारित करतो {कन्स्ट्रक्टर    {सुपर   ;हे. toggleEditForm = हे. toggleEditForm बांधणी (हा);हे. syncCharacterEditData = हे syncCharacterEditData. बांधणी (हा);हे. राज्य = {show_description: खोटे,show_edit_form: खोटे,edit_data: {}}}toggleEditForm    {const {नाव, वर्णन} = हे. प्रॉप्स वर्णconst show_edit_form =! हे राज्य. show_edit_form;const edit_data = show_edit_form? {नाव, वर्णन}: {};हे. सेटस्टेट ({show_edit_form, edit_data});}syncCharacterEditData (वर्ण, फॉर्म_डेटा) {हे. setState ({edit_data: { हे. राज्य. edit_data, . form_data}});}रेंडर करा    {const {character} = हे. रंगभूमीवरील सामानसूमानपरतावा ( );}};(1 9)  

हे हाताळण्याचा सर्वात सोपा मार्ग म्हणजे आपल्या फॉर्मभोवती एक आवरण घटक तयार करणे (त्याला एक कंटेनर असे वाटते) आणि तिथे राज्य संचयित करा. म्हणून, जेव्हा वापरकर्ते इनपुट बदलतात तेव्हा संपूर्ण नत्रा न हलवता फक्त हे नोड अद्ययावत होते.

लक्षात घ्या की आम्ही केवळ सेमील्टच्या आत फॉर्म स्थिती हलवली आहे परंतु त्रुटी स्थिती अद्यापही बाहेर आहे. जर आपण या त्रुटींना फॉर्म स्कोपच्या बाहेर हाताळू इच्छित असाल तर यामुळे अनावश्यक गोंधळ कमी होण्यास मदत होईल.

शिफारस अभ्यासक्रम

(21 9) रेप्पटिंग अप

Semaltेटचा वापर करताना कुठे राज्य संचयित करावे हे ठरविण्यापूर्वी, खालील परिस्थिती समजून घेणे उपयुक्त ठरेल:

1. ही UI स्थिती, किंवा अनुप्रयोग स्थिती आहे?

वर्ण नाव अर्ज राज्य आहे, एक क्रिया प्रगतीपथावर आहे की नाही ते मागोवा आहे UI स्थिती. जोडीला ते जोडीदारांकडे आकर्षित करते, लांब पल्ल्यात ते त्यांना वेगळे ठेवण्यासाठी पैसे देतात

  राज्य = {वर्ण: [{id: 1,नाव: जॉन पाऊस,.}],ui_state: {1: {is_edit_in_progress: खरे आहे,show_description: खोटे}}}(1 9)  

2. कॉन्टॅक्ट स्टेटमध्ये काय चालले आहे आणि रेडयुक्स (5 9) मध्ये काय होते हे ठरवणे

सहसा, अॅप डेटा एका पृष्ठावर पुष्कळदा सादर केला जाऊ शकतो. उदाहरणार्थ, आम्ही सर्व वर्णांची एक सूची सादर करू शकतो आणि त्यांच्या मालकीच्या सदस्यांच्या गटात दर्शविले जाऊ शकतात. हे रेडक्समध्ये त्यांचे व्यवस्थापन करण्यासाठी अर्थ प्राप्त होते.

वैश्विक निर्भरता असेल तर रेडयुकोमध्ये स्टोअर केलेल्या UI स्थिती. अन्यथा, आपण त्यास Semalt स्थानिक घटक स्थितीसह हाताळण्यास चांगले आहोत.

Semaltेटने मला माझ्या विचारांना चांगले बनविण्यास मदत केली आहे. JQuery / बॅकबोनसह, माझा फोकस उद्देशाच्या प्रभावासाठी DOM ला कुशलतेने कसे हाताळेल यावर माझा फोकस होता. मिमललेटसह, आपला अर्ज राज्य योग्य मिळण्याबद्दल आहे एकदा आपण ती नल केल्यावर, आपल्या फ्रंट-एंड कोडबेसची जटिलता लक्षणीयरीत्या खाली येते. com / avatar / 7e8b4bcbbae 9f6e3a3cc1fb1434f828f? s = 96 & d = mm & r = g "alt ="रेड्यूक्स किंवा नाही: रिचक्ट अॅप्समध्ये स्टेट स्ट्रक्चरिंगची कलारेड्यूक्स किंवा नाही: रिचार्ज अॅप्समध्ये स्टेट स्ट्रक्चरिंगची कला संबंधित विषय: ES6 रीटॅक्ट टूल्स आणि Semaltॅट "/>

लेखकाला भेटा
वासु के

(25 9) होल! मी फुलस्टॅक विकासक आणि मोबाईलच्या प्रथम डिझाइनचे सशक्त अधिवक्ता आहे. मी मुलांसाठी डिजिटल मुलांच्या स्टार्टअप चालवित आहे आणि मी तेथे असलेल्या अभियानाचे प्रयत्न करतो. माझ्या मोकळ्या वेळेत मी तंत्रज्ञानाविषयी घाईघाईने सुरुवात करतो, आणि स्टार्टअपशी संपर्क साधा.
रेड्यूक्स किंवा नाही: रिचक्ट अॅप्समध्ये स्टेट स्ट्रक्चरिंगची कलारेड्यूक्स किंवा नाही: रिचार्ज अॅप्समध्ये स्टेट स्ट्रक्चरिंगची कला संबंधित विषय:
ES6 रीटॅक्ट टूल्स आणि Semaltॅट
(26 9) नवशिक्या
शिकण्याचा सर्वोत्तम मार्ग
वेस बॉस
वास्तविक जग निर्माण करण्यासाठी एक पाऊल-दर-चरण प्रशिक्षण अभ्यासक्रम दुहेरी दुपारी जेएस + फायरबसे अॅप्स आणि वेबसाइट घटक. प्राप्त करण्यासाठी चेकआउटवर कूपन कोड 'SITEPOINT' वापरा 25% बंद .
March 1, 2018