Sebenarnya itu tergantung pada kasus penggunaan Anda.
1) Anda ingin melindungi rute Anda dari pengguna yang tidak sah
Jika demikian, Anda dapat menggunakan komponen yang dipanggil <Redirect />
dan dapat menerapkan logika berikut:
import React from 'react'
import { Redirect } from 'react-router-dom'
const ProtectedComponent = () => {
if (authFails)
return <Redirect to='/login' />
}
return <div> My Protected Component </div>
}
Perlu diingat bahwa jika Anda ingin <Redirect />
bekerja seperti yang Anda harapkan, Anda harus menempatkannya di dalam metode render komponen Anda sehingga pada akhirnya akan dianggap sebagai elemen DOM, jika tidak maka tidak akan berfungsi.
2) Anda ingin mengalihkan setelah tindakan tertentu (katakanlah setelah membuat item)
Dalam hal ini Anda dapat menggunakan riwayat:
myFunction() {
addSomeStuff(data).then(() => {
this.props.history.push('/path')
}).catch((error) => {
console.log(error)
})
atau
myFunction() {
addSomeStuff()
this.props.history.push('/path')
}
Untuk memiliki akses ke riwayat, Anda dapat membungkus komponen Anda dengan HOC yang dipanggil withRouter
. Ketika Anda membungkus komponen Anda dengan itu, itu lewat match
location
dan history
props. Untuk detail lebih lanjut, lihat dokumentasi resmi untuk withRouter .
Jika komponen Anda adalah anak dari <Route />
komponen, yaitu jika itu adalah sesuatu seperti <Route path='/path' component={myComponent} />
, Anda tidak perlu untuk membungkus komponen Anda dengan withRouter
, karena <Route />
melewati match
, location
dan history
untuk anaknya.
3) Alihkan setelah mengklik beberapa elemen
Ada dua opsi di sini. Anda dapat menggunakan history.push()
dengan meneruskannya ke onClick
acara:
<div onClick={this.props.history.push('/path')}> some stuff </div>
atau Anda dapat menggunakan <Link />
komponen:
<Link to='/path' > some stuff </Link>
Saya pikir aturan praktis dengan kasus ini adalah mencoba menggunakan <Link />
dulu, saya kira terutama karena kinerja.