2016-06-11 29 views
12

में रेडक्स बनाम सेवाएं मैं यह सुनिश्चित करना चाहता हूं कि मैंने रेडक्स को सही समझा है। मेरी समझ यह है कि यह पूर्ण एक आवेदन की स्थिति (सभी उपप्रणाली समेत) को संग्रहीत करेगा जैसे सभी घटकों के मॉडल और प्राप्त डेटा और उपयोगकर्ता द्वारा उत्पन्न डेटा के कैश। क्या इसका मतलब है कि मुझे किसी मॉडल की स्थिति को लोड करने/सहेजने के लिए कभी भी सेवा का उपयोग नहीं करना चाहिए?एंगुलर 2

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

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

रेडक्स में माइग्रेट करना मतलब है कि यह सब स्टोर करने के लिए स्थानांतरित हो जाएगा, और लगभग सभी सेवा स्टेटलेस और सीधे स्टोर करने के लिए प्रेषित होगी, और क्रमशः सभी घटक मॉडल स्टोर से सब्सक्राइब किए जाते हैं?

उत्तर

0

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

1

"Redux की ओर पलायन का मतलब है इस सब के स्टोर करने के लिए ले जाया जाएगा करता है"

सं
आप ngrx सबसे अच्छा तरीका यह संभाल करने ngrx/प्रभाव के साथ होगा का उपयोग कर रहे हैं तो। यह एक साथी लाइब्रेरी है जिसका अर्थ है "अपना एसिंक कोड डालने का स्थान", या दूसरे शब्दों में यह जगह साइड इफेक्ट्स करने के लिए है। तो जब घटक कुछ नया डेटा चाहता है तो यह एक "GET_DATA" क्रिया को प्रेषित करेगा और इसे ngrx @Effect के रूप में संभाला जाएगा। आपके प्रभाव के अंदर वह जगह है जहां आप डेटा को कॉल करने और पुनर्प्राप्त करने के लिए अपनी कस्टम सेवा का उपयोग कर सकते हैं (इसलिए आपकी एसिंक सेवाएं शायद ठीक हैं और केवल थोड़ी-थोड़ी tweaked की आवश्यकता हो सकती है)। फिर आप प्रभाव डालते हैं जिसमें नए डेटा को रेड्यूसर पर वापस किया जाता है जो नए डेटा वाले राज्य को अपडेट करता है। आपका घटक पूरे समय स्टोर करने के लिए सदस्यता ले रहा था, इसलिए जब राज्य को reducer द्वारा अद्यतन किया जाता है तो घटक इस परिवर्तन के बारे में जानता है और स्वचालित रूप से इसे अपने स्थानीय राज्य को अपडेट कर सकता है।