Bagaimana untuk Mengalihkan Pengaturcaraan dalam React Router v6 daripada Komponen Kelas?

Patricia Arquette
Lepaskan: 2024-10-31 23:34:28
asal
696 orang telah melayarinya

How to Programmatically Redirect in React Router v6 from a Class Component?

Dalam React Router v6, bagaimana saya boleh mengubah hala secara atur cara ke laluan tertentu daripada komponen kelas?

Masalah:

Apabila cuba mengubah hala secara atur cara ke laluan lain daripada komponen kelas dalam React Router v6, anda mungkin menghadapi ralat berikut:

TypeError: Cannot read properties of undefined (reading 'push')
Salin selepas log masuk

Ralat ini berlaku kerana prop navigasi tidak tersedia pada komponen kelas dalam v6 . Sebaliknya, ia hanya boleh diakses oleh komponen berfungsi.

Penyelesaian:

Terdapat dua cara untuk menyelesaikan isu ini:

  1. Tukar komponen kelas kepada komponen fungsi:

    • Tukar komponen kelas AddContacts kepada komponen berfungsi menggunakan cangkuk (cth., useState, useEffect dan useNavigate).
  2. Buat tersuai denganRouter HOC:

    • Buat Komponen Pesanan Tinggi (HOC) dipanggil denganRouter yang menyuntik prop navigasi dan lain-lain Tindakbalas cangkuk Penghala ke dalam komponen yang dibalut.
    • Hias komponen AddContacts dengan withRouter HOC dengan cara berikut:
import withRouter from './withRouter'; // Change this to the path of your custom HOC file

export default withRouter(AddContacts);
Salin selepas log masuk

Ini akan menyediakan navigasi sandarkan kepada komponen AddContacts.

Nota Tambahan:

Dalam React Router v6, fungsi navigasi bukan lagi objek tetapi fungsi yang mengambil laluan sasaran sebagai hujah pertama dan objek pilihan pilihan sebagai hujah kedua.

interface NavigateFunction {
  (
    to: To,
    options?: { replace?: boolean; state?: State }
  ): void;
  (delta: number): void;
}
Salin selepas log masuk

Ini bermakna sintaks untuk navigasi juga telah berubah. Untuk menavigasi ke laluan menggunakan navigasi, gunakan fungsi seperti berikut:

// Example usage
this.props.navigate("/");
Salin selepas log masuk

Dengan mengikuti salah satu daripada penyelesaian di atas, anda seharusnya dapat mengubah hala secara atur cara ke laluan berbeza dalam React Router v6.

Atas ialah kandungan terperinci Bagaimana untuk Mengalihkan Pengaturcaraan dalam React Router v6 daripada Komponen Kelas?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!