हमारे डेवलपर्स में से एक ने सुझाव दिया कि रेडक्स स्टोर बनाने के लिए कक्षाओं का उपयोग नहीं करना बेहतर है, लेकिन कोई ठोस कारण नहीं दिया, ज्यादातर यह कहते हुए कि "यह मुहावरेदार नहीं है और कक्षाएं ES6 में अच्छी तरह से लागू नहीं हैं; इसका उपयोग करने से बचना बेहतर है प्रतिक्रिया में कक्षाएं"।

क्या इस तरह से एक रेडक्स स्टोर बनाने के लिए कोई समस्या है (भले ही यह वास्तव में उद्योग-मानक न हो?)

class Item {
  public name: string;
}

class ItemState {
  public items: Item[];
  public currentItem: Item;
}

// redux store
class AppState {
  public Items = new ItemState();
}

// then createStore(/*reducer*/, new AppState())
1
Thinkhoop 14 फरवरी 2020, 18:29

2 जवाब

एक बात जो दिमाग में आती है वह है क्रमबद्धता। यदि आप हाइड्रेशन और टाइम-ट्रैवल डिबगिंग जैसी चीजों का समर्थन करना चाहते हैं तो आपको अपने स्टोर को क्रमबद्ध करने और इसे पुनर्स्थापित करने में सक्षम होना चाहिए।

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

यह भी देखें रेडक्स दस्तावेज़ीकरण का यह भाग

1
Nicholas Tower 14 फरवरी 2020, 18:46
हाँ, मुझे एहसास है कि कक्षाओं को बिना किसी व्यवहार के शुद्ध डीटीओ होना चाहिए। मैं उन्हें तकनीकी रूप से थोड़े बदलाव के साथ इंटरफेस या प्रकार के रूप में घोषित कर सकता हूं।
 – 
Thinkhoop
14 फरवरी 2020, 20:51

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

function mapStateToProps(state)
{
   return {currentItemName: state.Items.currentItem.name};
}

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

0
tutiplain 14 फरवरी 2020, 18:43