प्रश्न:Redux: आयोजन कंटेनर, घटक, कार्यों और reducers
सबसे पोषणीय और सिफारिश की एक बड़ी React/Redux आवेदन में कंटेनर, घटक, कार्यों और reducers के आयोजन के लिए सर्वोत्तम तरीका क्या है ?
मेरी राय:
वर्तमान प्रवृत्तियों जुड़े कंटेनर घटक चारों ओर redux कोलेटरल (कार्रवाई, reducers, कहानियों ...) व्यवस्थित करने के लिए लग रहे हैं। जैसे
/src
/components
/...
/contianers
/BookList
actions.js
constants.js
reducer.js
selectors.js
sagas.js
index.js
/BookSingle
actions.js
constants.js
reducer.js
selectors.js
sagas.js
index.js
app.js
routes.js
यह बहुत अच्छा काम करता है! हालांकि इस डिजाइन के साथ कुछ समस्याएं प्रतीत होती हैं।
मुद्दे:
जब हम एक और कंटेनर यह एक विरोधी पैटर्न लगती से actions
, selectors
या sagas
का उपयोग करने की जरूरत है। आइए मान लें कि हमारे पास एक वैश्विक /App
कंटेनर है जो एक रेड्यूसर/स्टेटस है जो पूरे स्टोर पर श्रेणियों और संख्याओं जैसे सूचनाओं को संग्रहीत करता है। ऊपर के उदाहरण से इसे जारी रखते हुए, एक राज्य के पेड़ के साथ:
{
app: {
taxonomies: {
genres: [genre, genre, genre],
year: [year, year, year],
subject: [subject,subject,subject],
}
}
books: {
entities: {
books: [book, book, book, book],
chapters: [chapter, chapter, chapter],
authors: [author,author,author],
}
},
book: {
entities: {
book: book,
chapters: [chapter, chapter, chapter],
author: author,
}
},
}
हम अपने /BookList
कंटेनर हम या तो /BookList/selectors.js
में फिर से बनाना होगा भीतर /App
कंटेनर से एक selector
का उपयोग करें (निश्चित रूप से गलत?) या यह आयात करना चाहते हैं /App/selectors
से (क्या यह हमेशा सटीक चयनकर्ता होगा ..? नहीं।)। इन दोनों appraoches मेरे लिए उप-इष्टतम लगते हैं।
इस उपयोग के मामले का मुख्य उदाहरण प्रमाणीकरण है (आह ... auth हम आपको नफरत करते हैं) क्योंकि यह बहुत आम "साइड-इफेक्ट" मॉडल है। हमें अक्सर पूरे ऐप पर /Auth
सागा, क्रियाएं और चयनकर्ताओं तक पहुंचने की आवश्यकता होती है। हमारे पास कंटेनर /PasswordRecover
, /PasswordReset
, /Login
, /Signup
.... वास्तव में हमारे ऐप में हमारे /Auth
contianer का कोई वास्तविक घटक नहीं है!
/src
/contianers
/Auth
actions.js
constants.js
reducer.js
selectors.js
sagas.js
बस ऊपर वर्णित विभिन्न और अक्सर गैर-संबंधित लेख कंटेनर के लिए सभी रेडक्स कॉललेटर शामिल हैं।
मैं अपने वर्तमान संरचना कैसे आप अपने चयनकर्ता का उपयोग कर रहे हैं के साथ, उत्सुक हूँ? एक घटक कहें 'बुकलिस्ट' चयनकर्ता फ़ंक्शंस का उपयोग करता है, क्या आप मुझे अपना 'mapStateToProps' फ़ंक्शन दिखा सकते हैं? क्या आप 'राज्य' से गुज़र रहे हैं? या 'state.booklist' – xiaofan2406