मैं मार्टिजेएस (जो "वेनिला" फ्लक्स के बहुत करीब है और उसी अंतर्निहित प्रेषक का उपयोग करता है) का उपयोग करके फ़्लक्स ऐप का निर्माण कर रहा हूं। इसमें एक अंतर्निहित निर्भरता संबंध वाले स्टोर शामिल हैं। उदाहरण के लिए, UserStore
वर्तमान उपयोगकर्ता को ट्रैक करता है, और InstanceStore
वर्तमान उपयोगकर्ता के स्वामित्व वाले डेटा के उदाहरण ट्रैक करता है। इंस्टेंस डेटा एपीआई से असीमित रूप से लाया जाता है।फ्लक्स में AJAX: निर्भर राज्य बदलते समय ताज़ा स्टोर
प्रश्न यह है कि उपयोगकर्ता बदलते समय InstanceStore
की स्थिति के साथ क्या करना है।
मुझे विश्वास है (उदाहरण के लिए SO पर @fisherwebdev द्वारा जवाब पढ़ना) कि एक्शन के निर्माता एजेक्स अनुरोधों को एजेक्स अनुरोध करने के लिए सबसे उपयुक्त है, और एक एजेक्स "सफलता" परिणामस्वरूप एक क्रिया में परिणामस्वरूप बदलने के लिए स्टोर।
तो, उपयोगकर्ता को लाने के लिए (यानी लॉग इन करें), मैं एक्शन कर निर्माता में AJAX कॉल कर रहा हूं, और जब यह हल हो जाता है, तो मैं उपयोगकर्ता के साथ एक पेलोड के रूप में RECEIVE_USER
कार्रवाई भेज रहा हूं। UserStore
इसकी बात सुनता है और तदनुसार इसके राज्य को अपडेट करता है।
हालांकि, यदि उपयोगकर्ता बदल गया है तो मुझे InstanceStore
में सभी डेटा फिर से लाने की आवश्यकता है।
विकल्प 1: मैं InstanceStore
में RECEIVE_USER
को सुन सकते हैं, और अगर यह एक नया उपयोगकर्ता है, एक AJAX अनुरोध, जो बारी में एक और कार्रवाई, जो बारी में InstanceStore
अद्यतन करने के लिए कारण बनता है बनाता है ट्रिगर। इसके साथ समस्या यह है कि यह कैस्केडिंग क्रियाओं की तरह लगता है, हालांकि तकनीकी रूप से यह एसिंक है इसलिए प्रेषक शायद इसे अनुमति देगा।
विकल्प 2: एक और तरीका है InstanceStore
के लिए किया जाएगा UserStore
द्वारा उत्सर्जित ईवेंट को बदलने और फिर अनुरोध कार्रवाई नृत्य करने के लिए सुनने के लिए है, लेकिन यह गलत भी महसूस करता है।
विकल्प 3: दो एजेक्स कॉलों को व्यवस्थित करने और अलग-अलग कार्यों को अलग करने के लिए एक्शन निर्माता के लिए एक तीसरा तरीका होगा। हालांकि, अब एक्शन निर्माता को यह जानना है कि स्टोर्स एक-दूसरे से कैसे संबंधित हैं।
Where should ajax request be made in Flux app? में उत्तरों में से एक मुझे लगता है कि विकल्प 1 सही है, लेकिन फ्लक्स डॉक्स यह भी दर्शाता है कि कार्यों को ट्रिगर करने वाले स्टोर अच्छे नहीं हैं।
दो दुकानों के लिए कारण सभी डेटा उपयोगकर्ता से जुड़ा हुआ है कि किसी भी तरह (डेटा मूल रूप से एक ग्राफ है), तो आप या तो एक विशाल के साथ अंत शुरुआत और एक एकल में लाने है , मोनोलिथिक स्टोर, या आपके पास स्टोर निर्भरताएं हैं। – optilude