जहां तक मुझे रेडक्स समझा जाता है, यह एक स्टोर में यूआई की सभी स्थिति को रखने के बारे में है (कुछ राज्यों को आसानी से पुन: पेश करने में सक्षम होने के लिए और कोई दुष्प्रभाव नहीं है)। आप रेड्यूसर को ट्रिगर करने वाले कार्यों को ट्रिगर करने के माध्यम से राज्य में हेरफेर कर सकते हैं।रेडक्स के साथ प्रतिक्रिया घटकों के बीच यूआई राज्य परिवर्तनों को कैसे संवाद करें?
मैं वर्तमान में एक छोटा ब्लॉग-एप ऐप लिख रहा हूं जहां आप आसानी से पोस्ट बना सकते हैं और संपादित कर सकते हैं। संवाद के राज्य (खोला या बंद) चाहिए राज्य वस्तु का हिस्सा हो:
<div>
<AppBar ... />
<PostFormDialog
addPost={actions.addPost}
ref="postFormDialog" />
<PostList
posts={posts}
actions={actions} />
</div>
मेरा प्रश्न है: मैं एक पोस्ट बनाने के लिए एक संवाद है, App
घटक का लगभग render
विधि कुछ इस तरह देता है ऐप घटक का? और इसलिए खोलने और बंद करने संवाद बजाय निम्नलिखित की तरह कुछ करने का एक कार्रवाई के माध्यम से शुरू किया जा चाहिए:
onTriggerCreatePostDialog(e) {
this.refs.postFormDialog.show();
}
जहां onTriggerCreatePostDialog
कुछ क्लिक श्रोता के माध्यम से शुरू हो रहा है एक "बनाने के" बटन या इतने पर।
ऐसा लगता है कि यह एक क्रिया के माध्यम से ऐसा करने के लिए थोड़ा अजीब लगता है क्योंकि यह "संकेत" की तरह पेश करता है।
हालांकि, यह मानते हुए कि मैं संपादन कार्रवाई के लिए संवाद का पुन: उपयोग करना चाहता हूं, मैं घटक संरचना में गहरे तत्वों से संवाद खोलने में सक्षम होना चाहिए, उदाहरण के लिए Post
घटक जो PostList
का बच्चा है घटक। क्या मैं कर सकता props
संपत्ति के माध्यम से पदानुक्रम नीचे onTriggerCreatePostDialog
समारोह पारित है, लेकिन यह मेरे लिए बोझिल लगता है ...
तो पूर्णांक अंत है घटक जो एक सीधा अभिभावक-बच्चे में नहीं हैं के बीच संवाद स्थापित करने के बारे में भी है रिश्ते। क्या अन्य विकल्प हैं? क्या मुझे किसी वैश्विक घटना बस का उपयोग करना चाहिए? मैं वर्तमान में बिल्कुल अनिश्चित हूँ।
मान लें कि संवाद मोडल नहीं है। प्रारंभ में यह दिखाया नहीं गया है और इसका राज्य आपके जैसा प्रक्षेपित होता है। मैं एक बटन पर क्लिक करता हूं, 'शोडियलॉग' सत्य बन जाता है और यह संवाद दिखाया जाता है। अब, अगर मैं संवाद से कहीं और क्लिक करता हूं, तो यह फिर से बंद हो जाता है, लेकिन 'showDialog' को तदनुसार छेड़छाड़ नहीं किया जाता है, जब तक कि मैं उस मामले को' PostFormDialog' में स्पष्ट रूप से संभाल नहीं लेता। यह सिर्फ एक उदाहरण है जहां मेरी राय में संवाद की स्थिति का संचालन बोझिल हो जाता है। क्या आप इसे वैसे भी करेंगे? –
स्मार्ट घटक के बारे में: उदाहरण के लिए, मोडल संवाद की स्थिति का प्रबंधन करने के लिए शायद एक और स्मार्ट घटक पेश करना उचित होगा? एक नई पोस्ट बनाने और मौजूदा लोगों को संपादित करने के लिए संवाद का उपयोग किया जा सकता है। इसके अलावा आपको सफल सृजन/संपादन के बाद संवाद को "समाशोधन" जैसी चीजों को संभालना होगा और इस तरह ... –
यह दृष्टिकोण काम करेगा, लेकिन यह किसी भी संवाद उपस्थिति/गायब होने वाली एनीमेशन को तोड़ देगा, है ना? चूंकि मूल घटक को फिर से प्रस्तुत किया गया है, इसलिए संवाद तुरंत स्क्रीन से हटा दिया जाएगा। मुझे आश्चर्य है कि इसके लिए सबसे अच्छा कामकाज क्या है? –