Saya memiliki yang berikut ini:
<Route name="app" path="/" handler={App}>
<Route name="dashboards" path="dashboards" handler={Dashboard}>
<Route name="exploreDashboard" path="exploreDashboard" handler={ExploreDashboard} />
<Route name="searchDashboard" path="searchDashboard" handler={SearchDashboard} />
<DefaultRoute handler={DashboardExplain} />
</Route>
<DefaultRoute handler={SearchDashboard} />
</Route>
Saat menggunakan DefaultRoute, SearchDashboard salah merender karena Dasbor * apa pun perlu dirender dalam Dasbor.
Saya ingin agar DefaultRoute saya berada dalam Rute "app" untuk mengarah ke Rute "searchDashboard". Apakah ini sesuatu yang dapat saya lakukan dengan React Router, atau haruskah saya menggunakan Javascript normal (untuk pengalihan halaman) untuk ini?
Pada dasarnya, jika pengguna membuka halaman beranda, saya ingin mengirimnya ke dasbor pencarian. Jadi saya rasa saya sedang mencari fitur React Router yang setara denganwindow.location.replace("mygreathostname.com/#/dashboards/searchDashboard");
javascript
routes
reactjs
url-redirection
react-router
Matthew Herbst
sumber
sumber
Jawaban:
Anda dapat menggunakan Redirect sebagai ganti DefaultRoute
Perbarui 2019-08-09 untuk menghindari masalah dengan penyegaran, gunakan ini sebagai gantinya, terima kasih kepada Ogglas
sumber
from='/a' to='/a/:id'
, Anda perlu menggunakan<Switch>
untuk memasukkan komponen<Redirect>
dan Anda<Route>
dari react-router. Detail lihat dok<Redirect exact from="/" to="/adaptation" />
exact
benderanya. Jawaban acceptet tidak ada, sehingga cocok dengan [hampir] rute manapun.Masalah dengan penggunaan
<Redirect from="/" to="searchDashboard" />
adalah jika Anda memiliki URL yang berbeda, katakanlah/indexDashboard
dan pengguna menekan segarkan atau mendapatkan URL yang dikirim kepada mereka, pengguna akan tetap diarahkan ke sana/searchDashboard
.Jika Anda tidak ingin pengguna menyegarkan situs atau mengirim URL gunakan ini:
Gunakan ini jika
searchDashboard
berada di belakang login:sumber
Saya salah mencoba membuat jalur default dengan:
Tapi ini menciptakan dua jalur berbeda yang merender komponen yang sama. Hal ini tidak hanya tidak berguna, tetapi juga dapat menyebabkan gangguan pada UI Anda, yaitu saat Anda menata
<Link/>
elemen berdasarkanthis.history.isActive()
.Cara yang benar untuk membuat rute default (itu bukan rute indeks) adalah dengan menggunakan
<IndexRedirect/>
:Ini didasarkan pada react-router 1.0.0. Lihat https://github.com/rackt/react-router/blob/master/modules/IndexRedirect.js .
sumber
Route
sesuatu yang sudah ditangani oleh AndaIndexRoute
?/
daripada harus dialihkan ke mis/home
.<IndexRoute>
. Maaf atas kebisingannya. stackoverflow.com/questions/32706913/… github.com/reactjs/react-router/blob/master/docs/guides/…Jawaban Jonathan sepertinya tidak berhasil untukku. Saya menggunakan React v0.14.0 dan React Router v1.0.0-rc3. Ini dilakukan:
<IndexRoute component={Home}/>
.Jadi dalam Kasus Matthew, saya yakin dia ingin:
<IndexRoute component={SearchDashboard}/>
.Sumber: https://github.com/rackt/react-router/blob/master/docs/guides/advanced/ComponentLifecycle.md
sumber
SearchDashboard
akan menjadi komponen yang akan Anda lihat saat Anda tiba di beranda, tetapi bukanDashboard
komponen yang membungkusnya jika Anda langsung membuka/dashboard/searchDashboard
. React-router secara dinamis membangun hierarki komponen bersarang berdasarkan rute yang cocok dengan URL, jadi saya pikir Anda benar-benar membutuhkan pengalihan di sini.ini akan membuatnya ketika Anda memuat server pada host lokal itu akan mengarahkan Anda kembali ke / sesuatu
sumber
PEMBARUAN : 2020
Alih-alih menggunakan Redirect, Cukup tambahkan beberapa rute di
path
Contoh:
sumber
Saya mengalami masalah serupa; Saya ingin pengendali rute default jika tidak ada pengendali rute yang cocok.
Solusi saya adalah menggunakan wildcard sebagai nilai jalur. yaitu Pastikan juga itu adalah entri terakhir dalam definisi rute Anda.
sumber
Bagi mereka yang memasuki tahun 2017, ini adalah solusi baru dengan
IndexRedirect
:sumber
sumber
DefaultRoute
direact-router
v4?<Route exact path="/" component={Home}/>
. reacttraining.com/react-router/web/example/basicMetode yang disukai adalah dengan menggunakan komponen IndexRoutes react router
Anda menggunakannya seperti ini (diambil dari dokumen react router yang ditautkan di atas):
sumber
Anda menggunakannya seperti ini untuk mengalihkan pada URL tertentu dan membuat komponen setelah mengalihkan dari router lama ke router baru.
sumber