Untuk menavigasi secara programatik antara laluan menggunakan useHistory
dalam Router React, anda perlu mengimport cangkuk dari perpustakaan react-router-dom
dan kemudian menggunakannya dalam komponen anda. Berikut adalah panduan langkah demi langkah mengenai cara menggunakan useHistory
untuk navigasi:
Import useHistory
: Mula dengan mengimport useHistory
dari pakej react-router-dom
pada permulaan fail komponen anda.
<code class="javascript">import { useHistory } from 'react-router-dom';</code>
Inisialisasi useHistory
: Di dalam komponen fungsional anda, hubungi useHistory
untuk mendapatkan objek sejarah.
<code class="javascript">const history = useHistory();</code>
Navigasi dengan kaedah push
: Gunakan kaedah push
objek sejarah untuk menavigasi ke laluan baru. Contohnya, untuk menavigasi ke halaman /about
, anda akan lakukan:
<code class="javascript">history.push('/about');</code>
Gantikan entri semasa dengan kaedah replace
: Jika anda ingin menavigasi ke laluan baru tetapi ganti entri semasa dalam timbunan sejarah (jadi butang belakang tidak akan kembali ke halaman sebelumnya), gunakan kaedah replace
sebaliknya:
<code class="javascript">history.replace('/about');</code>
Kembali dan ke hadapan : Anda juga boleh menggunakan kaedah goBack
, goForward
, dan go
untuk menavigasi kembali, ke hadapan, atau ke titik tertentu dalam timbunan sejarah.
<code class="javascript">history.goBack(); // Go back to the previous page history.goForward(); // Go forward to the next page history.go(-2); // Go back two entries in the history stack</code>
Menggunakan useHistory
dengan cara ini membolehkan anda mengawal navigasi secara programatik dalam aplikasi React anda.
Walaupun useHistory
adalah alat yang berkuasa untuk navigasi programatik dalam React, terdapat beberapa perangkap biasa untuk mengetahui:
useHistory
telah ditolak dan digantikan oleh useNavigate
. Menggunakan useHistory
dalam versi baru Router React akan membawa kepada kesilapan. Sentiasa periksa versi Router React yang anda gunakan dan gunakan cangkuk yang sesuai.useHistory
untuk navigasi mungkin menunjukkan pilihan reka bentuk yang lemah dalam struktur penghalaan aplikasi anda. Cuba gunakan penghalaan deklaratif di mana mungkin, menggunakan komponen Link
dan NavLink
, untuk memastikan navigasi mudah dan dapat dipelihara.useHistory
untuk navigasi dan juga cuba menguruskan negeri melalui ia boleh menyebabkan kekeliruan. Memahami pemisahan antara sejarah navigasi dan pengurusan negeri dalam permohonan anda. Bagi negeri, pertimbangkan untuk menggunakan penyelesaian pengurusan negeri React seperti Konteks, Redux, atau Mobx.replace
: Menggunakan replace
yang tidak perlu dapat menghalang pengguna daripada menggunakan butang belakang untuk menavigasi ke halaman yang telah dikunjungi sebelumnya, yang berpotensi mengelirukannya. Gunakan replace
hanya apabila anda mempunyai alasan tertentu untuk berbuat demikian. Melewati keadaan di antara laluan yang menggunakan useHistory
boleh dicapai dengan lulus objek dengan harta state
untuk push
atau replace
kaedah. Inilah cara anda boleh melakukannya:
Lulus Negeri : Apabila menavigasi ke laluan baru, anda boleh memasukkan objek negeri. Contohnya:
<code class="javascript">const history = useHistory(); history.push({ pathname: '/profile', state: { id: 123, name: 'John Doe' } });</code>
Mengakses Negeri : Dalam komponen yang diberikan pada laluan /profile
, anda boleh mengakses negeri menggunakan useLocation
dari react-router-dom
.
<code class="javascript">import { useLocation } from 'react-router-dom'; function Profile() { const location = useLocation(); const { id, name } = location.state || {}; return ( <div> <h1>Profile</h1> <p>ID: {id}</p> <p>Name: {name}</p> </div> ); }</code>
Dengan mengikuti langkah -langkah ini, anda boleh lulus dengan berkesan dan menggunakan keadaan apabila menavigasi antara laluan menggunakan useHistory
.
useHistory
dan useNavigate
adalah kedua -dua cangkuk dari Router React yang membolehkan navigasi programatik, tetapi mereka tergolong dalam versi yang berbeza dari perpustakaan dan mempunyai beberapa perbezaan utama:
Keserasian versi :
useHistory
adalah dari React Router V5 dan telah ditutup memihak kepada useNavigate
dalam React Router V6.useNavigate
adalah cangkuk yang disyorkan semasa untuk navigasi programatik dalam React Router V6.Sintaks dan Penggunaan :
useHistory
, anda biasanya menggunakan kaedah seperti push
, replace
, goBack
, goForward
, dan go
.useNavigate
, cangkuk mengembalikan fungsi ( navigate
) yang anda panggil dengan jalan dan pilihan untuk mencapai hasil yang sama. Sebagai contoh, navigate('/about')
atau navigate('/about', { replace: true })
.Lulus keadaan :
useHistory
, anda lulus objek untuk push
atau replace
dengan harta state
.useNavigate
, anda boleh lulus objek state
sebagai pilihan apabila memanggil navigate
.<code class="javascript">// useHistory history.push({ pathname: '/profile', state: { id: 123 } }); // useNavigate navigate('/profile', { state: { id: 123 } });</code>
Navigasi Relatif :
useNavigate
menyokong navigasi laluan relatif, yang membolehkan anda menavigasi ke adik beradik atau laluan induk menggunakan ..
dalam rentetan laluan, yang tidak disokong dalam useHistory
.Navigasi Kembali dan Maju :
useHistory
menyediakan kaedah seperti goBack
dan goForward
secara langsung.useNavigate
, anda boleh mencapai kesan yang sama dengan memanggil navigate(-1)
untuk kembali dan navigate(1)
untuk ke hadapan.Memahami perbezaan ini adalah penting apabila membuat keputusan yang digunakan untuk digunakan, bergantung kepada versi Router React Project anda menggunakan.
Atas ialah kandungan terperinci Bagaimanakah anda menavigasi secara programatik antara laluan menggunakan useHistory?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!