Rumah > hujung hadapan web > tutorial js > Bagaimana untuk Navigasi Secara Program dalam Penghala Reaksi tanpa Mengubah Fungsi Render?

Bagaimana untuk Navigasi Secara Program dalam Penghala Reaksi tanpa Mengubah Fungsi Render?

Susan Sarandon
Lepaskan: 2024-12-05 14:27:14
asal
1068 orang telah melayarinya

How to Programmatically Navigate in React Router without Modifying the Render Function?

Menavigasi Secara Program dengan React-Router

Cabaran:

Dalam aplikasi React anda, anda ingin menavigasi secara pemrograman ke laluan berbeza berdasarkan status log masuk pengguna. Anda tidak pasti cara untuk mencapai ini tanpa mengubah fungsi pemaparan.

Penyelesaian untuk React-Router v4:

Menggunakan Objek Sejarah:

Balut komponen anda dengan denganPenghala dan manfaatkan kaedah history.push daripada prop. Pendekatan ini berguna apabila komponen anda menerima prop penghalaan atau tidak dipautkan terus kepada Penghala.

import { withRouter } from 'react-router';

class App extends React.Component {
...
componentDidMount() {
// Check user login status
if (isLoggedIn) {
// Redirect to home route
this.props.history.push('/home');
}
}
render() {
// Render login component
return <Login />;
}
}

export default withRouter(App);
Salin selepas log masuk

Menggunakan Ubah hala:

Untuk senario yang lebih mudah, anda boleh gunakan Redirect.

import { withRouter } from 'react-router';

class App extends React.Component {
...
render() {
// If user is logged in, redirect to home route
if (isLoggedIn) {
return <Redirect to="/home" />;
}
// Render login component
return <Login />;
}
}
Salin selepas log masuk

Penyelesaian untuk React-Router v2/v3:

Menggunakan Konteks Penghala:

Balut komponen anda dan akses konteks penghala untuk menukar laluan secara dinamik.

import React from 'react';

class App extends React.Component {
...
render() {
// Check user login status
if (isLoggedIn) {
// Change route using router context
this.context.router.push('/home');
}
// Render login component
return <Login />;
}
}

App.contextTypes = {
router: React.PropTypes.object.isRequired
};
export default App;
Salin selepas log masuk

Menggunakan Sejarah Penyemak Imbas:

Mengakses secara langsung sejarah penyemak imbas juga boleh navigasi pencetus.

import { browserHistory } from 'react-router';

// Redirect to specific path
browserHistory.push('/some/path');
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Navigasi Secara Program dalam Penghala Reaksi tanpa Mengubah Fungsi Render?. 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