2016-10-25 15 views
7

मैं एक एपीआई से कुछ डेटा पुनर्प्राप्त करने और इसे अपने आवेदन में पास करने की कोशिश कर रहा हूं। प्रतिक्रिया/रेडक्स के लिए नया होने के बावजूद, मैं सोच रहा हूं कि इन कॉलों को कहां से बनाना है और इसे मेरे आवेदन में कैसे पास करना है? मेरे पास मानक फ़ोल्डर संरचना (घटक, reducers, कंटेनर, आदि) है, लेकिन मुझे यकीन नहीं है कि अब मेरी एपीआई कॉल कहां रखना है।एपीआई कॉल को रिएक्ट/रेडक्स आर्किटेक्चर में कहां रखा जाए?

+0

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

उत्तर

0

एजेक्स कॉल जैसे व्यवहार को "साइड इफेक्ट्स" के रूप में जाना जाता है, और आम तौर पर आपके घटकों, "थंक" एक्शन क्रिएटर, या अन्य समान रेडक्स साइड इफेक्ट एडॉन्स जैसे "सगास" में रहते हैं।

अधिक जानकारी के लिए कृपया इस उत्तर को रेडक्स FAQ में देखें: http://redux.js.org/docs/faq/Actions.html#actions-side-effects

1

इसके साथ शुरू करने का सबसे आसान तरीका यह है कि redux-thunk के साथ एक थंक नामक फ़ंक्शन का उपयोग करके इसे अपने कार्यों में शामिल करें।

import { createStore, applyMiddleware } from 'redux'; 
import thunk from 'redux-thunk'; 
import rootReducer from './reducers/index'; 

const store = createStore(
    rootReducer, 
    applyMiddleware(thunk) 
); 

फिर उस API कॉल अपने कार्यों में एक समारोह बनाने के लिए:: तुम सब करने की ज़रूरत है अपनी दुकान की ओर thunk जोड़ने है। "मछली जवाब देने के लिए एक आदमी को सिखाओ"

export const getData() { 
    (dispatch) => { 
    return fetch('/api/data') 
     .then(response => response.json()) 
     .then(json => dispatch(resolvedGetData(json))) 
    } 
} 

export const resolvedGetData(data) { 
    return { 
    type: 'RESOLVED_GET_DATA', 
    data 
    } 
} 
+0

को इस कार्य को कैसे प्रेषित/आमंत्रित करता हूं ? – mattnedrich

1

यह कॉल और स्थिति के प्रकार पर निर्भर करता है।

    सरल के लिए आम तौर पर
  1. "हो जाता है" यह आसानी से उन्हें अपनी कार्रवाई रचनाकारों में रखने के रूप में नादर डैबित से पता चला है के द्वारा किया जा सकता है।
  2. जो के लिए चुनते हैं आप अपने ब्लॉक में उन्हें जगह (redux-कहानियों, Axios कॉल, redux-thunk) कई पक्ष प्रभाव प्रबंधन पुस्तकालयों

मैं अब के लिए redux-कहानियों का उपयोग कर रहे हैं। कम से कम जब तक हम एएसआईएनसी/इंतजार पर yay या nay तय नहीं करते हैं जो संभवतः जेएस के एक नए संस्करण में आ रहा है।

यह सबसे महत्वपूर्ण हिस्सा हो सकता है!

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

संबंधित मुद्दे