Bagaimana untuk Mengalihkan Secara Pemrograman dalam React Router v6 dengan Komponen Kelas?

Patricia Arquette
Lepaskan: 2024-11-01 06:55:30
asal
142 orang telah melayarinya

How to Programmatically Redirect in React Router v6 with Class Components?

Masalah dalam Mengubah Hala Secara Pengaturcaraan ke Laluan dalam React Router v6

Isu

Menghadapi Ralat Jenis: Tidak dapat membaca sifat yang tidak ditentukan (membaca 'push' ) semasa cuba menavigasi menggunakan cangkuk useNavigate dalam komponen kelas.

Sebab

Dalam React Router v6, useNavigate hanya serasi dengan komponen fungsi. Apabila cuba menggunakannya dalam komponen kelas (AddContacts), ia kekal tidak ditentukan, mengakibatkan ralat.

Penyelesaian

Untuk menyelesaikan isu ini, terdapat dua pilihan:

1. Tukar AddContacts kepada Komponen Fungsi

Faktor semula komponen kelas AddContacts kepada komponen fungsi. Ini akan membolehkan anda menggunakan cangkuk useNavigate terus dalam fungsi.

2. Gunakan Custom withRouter HOC (Higher Order Component)

Buat custom withRouter HOC untuk menyuntik prop laluan, termasuk useNavigate, ke dalam komponen AddContacts.

Berikut ialah contoh tersuai dengan Router HOC:

const withRouter = (WrappedComponent) => (props) => {
  const navigate = useNavigate();

  return (
    <WrappedComponent
      {...props}
      navigate={navigate}
    />
  );
};
Salin selepas log masuk

Kemudian, hiaskan komponen AddContacts dengan HOC:

export default withRouter(AddContacts);
Salin selepas log masuk

Ini akan menghantar prop navigasi ke komponen AddContacts dan membolehkan anda menggunakannya seperti yang diharapkan.

Nota tentang Perubahan API Navigasi

Dalam React Router v6, API navigasi telah berubah. Objek sejarah tidak lagi digunakan secara langsung. Sebaliknya, terdapat fungsi navigasi yang mengambil satu atau dua argumen: laluan sasaran dan objek "pilihan" pilihan untuk menggantikan atau keadaan.

Untuk menavigasi secara pengaturcaraan, gunakan sintaks berikut:

this.props.navigate('/');
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Mengalihkan Secara Pemrograman dalam React Router v6 dengan 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!