Rumah > hujung hadapan web > Soal Jawab bahagian hadapan > Bagaimanakah anda menavigasi secara programatik antara laluan menggunakan useHistory?

Bagaimanakah anda menavigasi secara programatik antara laluan menggunakan useHistory?

Karen Carpenter
Lepaskan: 2025-03-21 11:54:34
asal
941 orang telah melayarinya

Bagaimanakah anda menavigasi secara programatik antara laluan menggunakan useHistory?

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:

  1. 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>
    Salin selepas log masuk
  2. Inisialisasi useHistory : Di dalam komponen fungsional anda, hubungi useHistory untuk mendapatkan objek sejarah.

     <code class="javascript">const history = useHistory();</code>
    Salin selepas log masuk
  3. 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>
    Salin selepas log masuk
  4. 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>
    Salin selepas log masuk
  5. 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>
    Salin selepas log masuk

Menggunakan useHistory dengan cara ini membolehkan anda mengawal navigasi secara programatik dalam aplikasi React anda.

Apakah perangkap biasa untuk dielakkan apabila menggunakan usehistory untuk navigasi?

Walaupun useHistory adalah alat yang berkuasa untuk navigasi programatik dalam React, terdapat beberapa perangkap biasa untuk mengetahui:

  1. Penggunaan ketinggalan zaman : Sehubungan dengan React Router V6, 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.
  2. Berlebihan navigasi langsung : Bergantung terlalu banyak pada 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.
  3. Kekurangan pengendalian kesilapan : Apabila menavigasi secara pemrograman, terutamanya kepada laluan dinamik, tidak mengendalikan kesilapan yang berpotensi (contohnya, menavigasi ke laluan yang tidak wujud) boleh menyebabkan permohonan anda memecahkan tanpa diduga. Melaksanakan sempadan ralat atau pengendalian ralat peringkat laluan.
  4. Kekeliruan Pengurusan Negeri : Menggunakan 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.
  5. Penyalahgunaan 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.

Bolehkah anda menerangkan bagaimana untuk melepasi keadaan antara laluan dengan usehistory?

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:

  1. 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>
    Salin selepas log masuk
  2. 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>
    Salin selepas log masuk
  3. Mengendalikan keadaan yang hilang : Apabila mengakses negeri dalam laluan sasaran, selalu periksa sama ada keadaan ditakrifkan untuk mengendalikan kes -kes di mana pengguna secara langsung mengakses URL tanpa melalui navigasi yang menetapkan keadaan.

Dengan mengikuti langkah -langkah ini, anda boleh lulus dengan berkesan dan menggunakan keadaan apabila menavigasi antara laluan menggunakan useHistory .

Bagaimanakah usehistory berbeza dari cangkuk navigasi lain seperti usenavigate?

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:

  1. 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.
  2. Sintaks dan Penggunaan :

    • Dengan useHistory , anda biasanya menggunakan kaedah seperti push , replace , goBack , goForward , dan go .
    • Dengan 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 }) .
  3. Lulus keadaan :

    • Di useHistory , anda lulus objek untuk push atau replace dengan harta state .
    • Dengan 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>
    Salin selepas log masuk
  4. 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 .
  5. Navigasi Kembali dan Maju :

    • useHistory menyediakan kaedah seperti goBack dan goForward secara langsung.
    • Dengan 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!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan