Saat Anda menyertakan komponen halaman utama dalam aplikasi Anda, itu sering kali dibungkus dengan <Route>
komponen seperti ini:
<Route path="/movies" component={MoviesIndex} />
Dengan melakukan ini, MoviesIndex
komponen memiliki akses this.props.history
sehingga dapat mengarahkan pengguna this.props.history.push
.
Beberapa komponen (biasanya komponen header) muncul di setiap halaman, jadi tidak digabungkan dalam <Route>
:
render() {
return (<Header />);
}
Artinya, header tidak dapat mengarahkan pengguna.
Untuk mengatasi masalah ini, komponen header bisa dibungkus dalam sebuah withRouter
fungsi, baik saat diekspor:
export default withRouter(Header)
Ini memberikan Header
akses komponen ke this.props.history
, yang berarti header sekarang dapat mengarahkan pengguna.
withRouter
juga memberikan akses kepadamatch
danlocation
. Alangkah baiknya jika jawaban yang diterima menyebutkan bahwa, karena mengarahkan pengguna bukan satu-satunya kasus penggunaanwithRouter
. Sebaliknya, ini adalah qna diri yang bagus.history
ataumatch
tidak ada secara default? yaitu MengapawithRouter
harus disebutkan secara eksplisit?withRouter
adalah komponen tingkat tinggi yang akan meneruskan rute terdekatmatch
, aruslocation
, dan propertihistory
ke komponen yang dibungkus setiap kali dirender. cukup dengan menghubungkan komponen ke router.Tidak semua komponen, terutama komponen bersama, akan memiliki akses ke props router tersebut. Di dalam komponen yang dibungkus, Anda akan dapat mengakses
location
prop dan mendapatkan lebih banyak informasi sepertilocation.pathname
atau mengarahkan pengguna ke url yang berbeda menggunakanthis.props.history.push
.Berikut contoh lengkap dari halaman github mereka:
Informasi lebih lanjut dapat ditemukan di sini .
sumber
withRouter
Komponen tingkat tinggi memungkinkan Anda untuk mendapatkan akses kehistory
properti objek dan<Route>
kecocokan terdekat .withRouter
akan meneruskan updatematch
,,location
danhistory
props ke komponen yang dibungkus setiap kali dirender.sumber
withRouter adalah komponen tingkat tinggi yang akan melewati rute terdekat untuk mendapatkan akses ke beberapa properti untuk lokasi dan cocok dari props itu hanya dapat diakses jika memberikan komponen properti yang terletak di komponen
dan sama kecocokan dan kemakmuran lokasi untuk dapat mengubah lokasi dan menggunakan this.props.history.push itu harus disediakan untuk setiap properti komponen harus menyediakan tetapi ketika digunakan WithRouter itu dapat akses ke lokasi dan cocok tanpa menambahkan riwayat properti itu dapat diakses arah tanpa menambahkan riwayat properti dari setiap Rute.
sumber