सबसे पहले, तुम क्या जरूरत नहीं है var r = this;के रूप में इस में if statementजो जब से तुम तीर समारोह का उपयोग कर रहे संदर्भित करता घटक संदर्भ प्रतिक्रिया करने के लिए कॉलबैक के संदर्भ को दर्शाता है।
डॉक्स के अनुसार:
इतिहास की वस्तुओं में आमतौर पर निम्नलिखित गुण और विधियाँ होती हैं:
इसलिए नेविगेट करते समय आप इतिहास की वस्तु की तरह प्रॉपर पास कर सकते हैं
this.props.history.push({
pathname: '/template',
search: '?query=abc',
state: { detail: response.data }
})
या इसी तरह Linkघटक या Redirectघटक के लिए
<Link to={{
pathname: '/template',
search: '?query=abc',
state: { detail: response.data }
}}> My Link </Link>
और फिर घटक में जो /templateमार्ग के साथ प्रदान किया जाता है, आप पास किए गए प्रॉपर तक पहुंच सकते हैं
this.props.location.state.detail
यह भी ध्यान रखें कि, प्रॉप्स से इतिहास या स्थान ऑब्जेक्ट का उपयोग करते समय आपको घटक को कनेक्ट करने की आवश्यकता होती है withRouter।
डॉक्स के अनुसार:
withRouter
आप उच्च-क्रम घटक के <Route>'sमाध्यम से इतिहास ऑब्जेक्ट के गुणों और निकटतम मिलान तक पहुंच प्राप्त कर सकते हैं
withRouter। रेंडर के withRouter
रूप में एक ही सहारा के साथ मार्ग परिवर्तन हर बार अपने घटक को फिर से प्रस्तुत करना होगा ।<Route>props: { match, location, history }
Routeके लिए उपयोग किया जाना चाहिएthis.props.location,this.props.historyआदि मैं आप का उपयोग करने की जरूरत नहीं लगता हैrefv4 वाले अब और। करने की कोशिश करेंthis.props.history.push('/template');