Aslında kullanım durumunuza bağlıdır.
1) Rotanızı yetkisiz kullanıcılardan korumak istiyorsunuz
Bu durumda, çağrılan bileşeni kullanabilir <Redirect />
ve aşağıdaki mantığı uygulayabilirsiniz:
import React from 'react'
import { Redirect } from 'react-router-dom'
const ProtectedComponent = () => {
if (authFails)
return <Redirect to='/login' />
}
return <div> My Protected Component </div>
}
İstersen unutmayın <Redirect />
, beklediğiniz gibi çalışmaya, içinde senin bileşen yılların yerleştirin gerektiğini sonunda DOM öğesi olarak kabul edilmelidir, böylece yöntemi hale aksi takdirde iş olmaz.
2) Belirli bir işlemden sonra yönlendirmek istiyorsunuz (diyelim ki bir öğe oluşturduktan sonra)
Bu durumda geçmişi kullanabilirsiniz:
myFunction() {
addSomeStuff(data).then(() => {
this.props.history.push('/path')
}).catch((error) => {
console.log(error)
})
veya
myFunction() {
addSomeStuff()
this.props.history.push('/path')
}
Geçmişe erişim sağlamak için, bileşeninizi adlı bir HOC ile sarmalayabilirsiniz withRouter
. Bileşeninizi onunla sardığınızda geçer match
location
ve history
desteklenir. Daha fazla ayrıntı için lütfen withRouter'ın resmi belgelerine bakın .
Senin bileşeni çocuğu ise <Route />
o gibi bir şey ise, yani bileşen, <Route path='/path' component={myComponent} />
, sizinle bileşeni sarmak gerekmez withRouter
, çünkü <Route />
paso match
, location
ve history
onun çocuğa.
3) Bir öğeyi tıkladıktan sonra yeniden yönlendirin
Burada iki seçenek var. Bunu history.push()
bir onClick
etkinliğe ileterek kullanabilirsiniz :
<div onClick={this.props.history.push('/path')}> some stuff </div>
veya bir <Link />
bileşen kullanabilirsiniz :
<Link to='/path' > some stuff </Link>
Sanırım bu vakada temel kural, öncelikle kullanmaya çalışmaktır <Link />
, sanırım özellikle performans nedeniyle.