আসলে এটি আপনার ব্যবহারের ক্ষেত্রে নির্ভর করে।
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 />
যদি নিজের প্রত্যাশা মতো কাজ করতে চান তবে আপনার এটিকে আপনার উপাদানটির রেন্ডার পদ্ধতির ভিতরে রাখা উচিত যাতে এটি শেষ পর্যন্ত একটি ডিওএম উপাদান হিসাবে বিবেচিত হয়, অন্যথায় এটি কাজ করবে না।
2) আপনি একটি নির্দিষ্ট ক্রিয়া পরে পুনঃনির্দেশ করতে চান (আসুন একটি আইটেম তৈরি করার পরে বলি)
সেক্ষেত্রে আপনি ইতিহাস ব্যবহার করতে পারেন:
myFunction() {
addSomeStuff(data).then(() => {
this.props.history.push('/path')
}).catch((error) => {
console.log(error)
})
বা
myFunction() {
addSomeStuff()
this.props.history.push('/path')
}
ইতিহাসে অ্যাক্সেস পেতে, আপনি এইচওসি ডেকে আপনার উপাদানটি মোড়ানো করতে পারেন withRouter
। আপনি যখন এটির সাথে আপনার উপাদানটি মোড়েন , এটি পাস match
location
এবং history
প্রপস। আরও বিশদের জন্য দয়া করে রউটারের সাথে সরকারী ডকুমেন্টেশনটি দেখুন ।
আপনার কম্পোনেন্ট একটি সন্তান হয়, তাহলে <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 />
প্রথমে ব্যবহারের চেষ্টা করা উচিত , আমি মনে করি বিশেষত পারফরম্যান্সের কারণে।