दरअसल यह आपके उपयोग के मामले पर निर्भर करता है।
1) आप अनधिकृत उपयोगकर्ताओं से अपने मार्ग की रक्षा करना चाहते हैं
यदि ऐसा है तो आप कॉल किए गए घटक का उपयोग कर सकते हैं <Redirect />
और निम्नलिखित तर्क को लागू कर सकते हैं:
import React from 'react'
import { Redirect } from 'react-router-dom'
const ProtectedComponent = () => {
if (authFails)
return <Redirect to='/login' />
}
return <div> My Protected Component </div>
}
अगर आप चाहें तो ध्यान रखें <Redirect />
अपनी अपेक्षा के अनुरूप काम , तो आपको इसे अपने घटक के रेंडर विधि के अंदर रखना चाहिए ताकि इसे अंततः DOM तत्व के रूप में माना जाए, अन्यथा यह काम नहीं करेगा।
2) आप एक निश्चित कार्रवाई के बाद पुनर्निर्देशित करना चाहते हैं (आइए एक आइटम बनाने के बाद कहते हैं)
उस स्थिति में आप इतिहास का उपयोग कर सकते हैं:
myFunction() {
addSomeStuff(data).then(() => {
this.props.history.push('/path')
}).catch((error) => {
console.log(error)
})
या
myFunction() {
addSomeStuff()
this.props.history.push('/path')
}
इतिहास तक पहुंच रखने के लिए, आप अपने घटक को HOC नाम से लपेट सकते हैं withRouter
। जब आप अपने घटक को इसके साथ लपेटते हैं, तो यह गुजरता है match
location
और history
सहारा लेता है । अधिक विवरण के लिए कृपया कृपया withRouter के आधिकारिक दस्तावेज देखें ।
अपने घटक एक का एक बच्चा है, तो <Route />
घटक, यानी अगर यह कुछ ऐसा है <Route path='/path' component={myComponent} />
, तो आप के साथ अपने घटक रैप करने के लिए की जरूरत नहीं है withRouter
, क्योंकि <Route />
गुजरता match
, location
और history
अपने बच्चे के लिए।
3) कुछ तत्व पर क्लिक करने के बाद रीडायरेक्ट करें
यहां दो विकल्प हैं। आप history.push()
इसे किसी onClick
ईवेंट में पास करके उपयोग कर सकते हैं :
<div onClick={this.props.history.push('/path')}> some stuff </div>
या आप एक <Link />
घटक का उपयोग कर सकते हैं :
<Link to='/path' > some stuff </Link>
मुझे लगता है कि इस मामले के साथ अंगूठे का नियम <Link />
पहले उपयोग करने की कोशिश करना है , मुझे लगता है कि प्रदर्शन के कारण विशेष रूप से।