मैं react-router
और react-redux
का उपयोग कर रहा हूं। मैं दो मार्गों इस तरह है:मैं किसी घटक को अनमाउंटिंग/रीमाउंट करने से प्रतिक्रिया को कैसे रोक सकता हूं?
<Route path='/edit' component={ EditNew } />
<Route path='/edit/:id' component={ EditDraft } />
जहां EditNew
और EditDraft
कि एक Editor
घटक लपेट डेटा उपलब्ध कराने के कंटेनर react-redux
connect
फ़ंक्शन का उपयोग कर रहे हैं:
const EditNew = connect(state => ({}))(React.createClass({
render() {
return <Editor />;
}
}));
और
const EditDraft = connect(state => ({ drafts: state.drafts }))(React.createClass({
render() {
const { params, drafts } = this.props;
const draft = findDraft(params.id, drafts);
return <Editor draft={ draft } />;
}
}));
अब , Editor
इस तरह से परेशान है कि जब आप एक ब्लैन में टाइप करना शुरू करते हैं के Editor
, यह /edit
से /edit/:id
को एक रनोली जेनरेट आईडी के साथ ट्रिगर करता है।
EditorNew
unmountsEditor
unmountsEditorDraft
renders और mountsEditor
renders और mounts
जब मैं इन दो कोडित: जब ऐसा होता है, मैं घटनाओं के निम्न क्रम मिल कंटेनर, मैंने सोचा कि Editor
उनमें से दोनों में निहित घटक बिना किसी समझौता किया जाएगा अनमाउंटिंग और रिमाउंटिंग। अतिरिक्त अनावश्यक काम के अलावा कई कारणों से यह मेरे लिए समस्याग्रस्त है, जिनमें से प्रमुख हैं कि संपादक अनमाउंट और रिमाउंट के बाद फोकस और उचित कर्सर रेंज खोने के समाप्त होते हैं।
Editor
घटक सुलह प्रणाली है कि यह एक ही घटक है करने के लिए संकेत करने के लिए के लिए
key
निर्दिष्ट करने की कोशिश की है करने के लिए
, और मैं shouldComponentUpdate
की कोशिश की है, लेकिन यह कहा जाता है नहीं होता है, जो दी भावना क्या प्रतिक्रिया है बनाता है करते हुए।
दो कंटेनरों को एक जटिल कंटेनर render()
तर्क के साथ एक कंटेनर में जोड़ने के अलावा, क्या मैं कुछ भी कर सकता हूं जो Editor
घटक को इतिहास संक्रमण के दौरान अनमाउंटिंग/रीमाउंटिंग से रोकने के लिए कर सकता है?
ऐसा लगता है जैसे यह काम कर रहा है; आप शीर्ष-स्तरीय घटक बदल रहे हैं, जिसमें से 'संपादक' एक बच्चा है, इसलिए इसे नए माता-पिता के तहत पूरी तरह नष्ट कर दिया जाना चाहिए। – Mathletics
तो मुझे कंटेनरों को मर्ज करना चाहिए? मैं https://github.com/rackt/redux-router देख रहा हूं लेकिन मैं इस परियोजना में और अधिक सामान नहीं जोड़ना चाहता हूं क्योंकि मैं इसे जल्द ही रिले में माइग्रेट करना चाहता हूं। –
हाँ, मैं एक सिंगल कंटेनर की सलाह दूंगा, खासकर जब से आप एक ही चीज़ के विभिन्न राज्यों के बारे में बात कर रहे हैं, पूरी तरह से अलग-अलग क्षमता में 'संपादक' का उपयोग नहीं कर रहे हैं। – Mathletics