2016-07-20 3 views
5

उम्मीद है कि यह एक बहुत ही सरल सवाल यह है:प्रतिक्रिया-redux प्राप्त साइट आधार URL/विंडो स्थान

मैं एक स्ट्रिंग, अपनी साइट पर एक पृष्ठ के लिए पूर्ण URL युक्त तरह बनाना चाहते हैं:

https://example.com/documents/1

आदर्श रूप में मैं mapStateToProps() में प्रतिक्रिया-रेडक्स connect() -ed कंटेनर में इसे उत्पन्न करना चाहता हूं। जहां पृष्ठ ब्राउज़र हिस्ट्री का उपयोग कर प्रतिक्रिया-राउटर Route का पोती है (तो शायद मैं इसे प्रतिक्रिया-राउटर या ब्राउज़र से प्राप्त कर सकता हूं?) यदि आवश्यक हो तो मैं इसे पूर्ण-पर प्रतिक्रिया कक्षा में करूँगा।

लेकिन मैं अपने जीवन के लिए यह नहीं कर सकता कि यह कैसे करें। window (window.location में) undefinedmapStateToProps() (कोई बड़ा आश्चर्य नहीं) और मेरे दृश्य घटकों में render() फ़ंक्शन में हमेशा undefined है।

अभी तक मुझे केवल वर्तमान मार्ग तक पहुंचने के तरीके मिल गए हैं, उदा। "/ दस्तावेज़/1", जो केवल एक सापेक्ष पथ है और इसमें साइट बेस यूआरएल (https://example.com/)

+0

क्या आपको सर्वर पर या केवल ग्राहक पर यह मजबूत बनाने की आवश्यकता है? –

+0

बस ग्राहक पक्ष पर। – stone

उत्तर

9

तो सबसे पहले, याद रखें कि आपका कोड क्लाइंट और सर्वर पर चलता है ताकि विंडो में किसी भी पहुंच को लपेटने की आवश्यकता हो चेक।

if (typeof window !== 'undefined') { 
    var path = location.protocol + '//' + location.host + '/someting'; // (or whatever) 
    } else { 
    // work out what you want to do server-side... 
    } 

यदि वह URL आप डोम में शो करते हैं, और ग्राहक पर इससे पहले कि आप इस यूआरएल के साथ दुकान को पॉप्युलेट पहले प्रस्तुत करना, आप एक चेकसम त्रुटि प्राप्त करने के लिए जा रहे हैं। यदि आप वास्तव में उस त्रुटि से बचना चाहते हैं, जिसे आप यूआरएल प्राप्त करने/सेट करने के लिए अपने रूट घटक में componentDidMount() तक प्रतीक्षा कर सकते हैं।

+0

धन्यवाद, घटक में 'window.location' पढ़ना DidMount काम किया। मैं ऐप में शीर्ष-स्तरीय घटक से करता हूं और इसे राज्य में सहेजता हूं। क्या मैं एक पूछ सकता हूं) आप सर्वर-साइड करने का सुझाव क्यों देते हैं - क्या ऐसा होगा कि सर्वर-साइड प्रतिपादन भी काम कर सके? और बी) सर्वर पक्ष से यूआरएल को संग्रहीत करने का सुझाव कैसे दिया जाएगा कि क्लाइंट कोड इसे पढ़ सकता है? – stone

+0

@skypecakes अब मैंने इसके बारे में सोचा है, हाँ सर्वर पर इसे पाने का कोई अच्छा कारण नहीं है, इसलिए मैंने उस टिप्पणी को मेरे उत्तर से हटा दिया है। –

संबंधित मुद्दे