Cara mengatur DefaultRoute untuk Rute lain dalam Bereaksi Router

Saya memiliki berikut:

  <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>

Ketika menggunakan DefaultRoute, SearchDashboard membuat salah karena setiap *Dashboard perlu diberikan dalam Dashboard.

Saya akan seperti untuk saya DefaultRoute dalam "app" Rute ke titik Rute "searchDashboard". Apakah ini sesuatu yang bisa saya lakukan dengan Bereaksi Router, atau saya harus menggunakan Javascript normal (untuk halaman redirect) untuk ini?

Pada dasarnya, jika pengguna masuk ke halaman rumah saya ingin mengirim mereka bukan untuk mencari dashboard. Jadi saya kira saya'm mencari Bereaksi Router fitur yang setara dengan jendela.lokasi hotel ini.mengganti("mygreathostname.com/#/dashboards/searchDashboard");

Mengomentari pertanyaan (2)
Larutan

Anda dapat menggunakan Redirect bukan DefaultRoute

Update 2019-08-09 untuk menghindari masalah dengan refresh menggunakan ini sebagai gantinya, terima kasih untuk Ogglas

Komentar (5)

Masalah dengan menggunakan <Redirect dari="/"="searchDashboard" /> jika anda memiliki URL yang berbeda, katakanlah /indexDashboard dan pengguna dapat me-refresh atau mendapat URL yang dikirim ke mereka, pengguna akan diarahkan ke /searchDashboard pula.

Jika anda wan't pengguna untuk dapat me-refresh situs atau mengirim Url menggunakan ini:

 (

)}/>

Gunakan ini jika searchDashboard di balik login:

 (
  loggedIn ? (

  ) : (

  )
)}/>
Komentar (1)

Aku salah mencoba untuk membuat default path dengan:


Tapi hal ini menciptakan dua jalur yang berbeda yang membuat komponen yang sama. Tidak hanya adalah ini sia-sia, tetapi dapat menyebabkan gangguan di UI, yaitu, ketika anda styling <Link/> unsur-unsur berdasarkan ini.sejarah.isActive().

Cara yang tepat untuk membuat sebuah default route (yang tidak indeks route) adalah dengan menggunakan <IndexRedirect/>:


Hal ini didasarkan pada reaksi-router 1.0.0. Lihat https://github.com/rackt/react-router/blob/master/modules/IndexRedirect.js.

Komentar (5)

Jonathan's jawaban didn't tampaknya bekerja untuk saya. I'm menggunakan Bereaksi v0.14.0 dan Bereaksi Router v1.0.0-rc3. Ini tidak:

<IndexRoute komponen={Rumah}/>.

Jadi dalam Matius's Kasus, saya percaya dia'd inginkan:

<IndexRoute komponen={SearchDashboard}/>.

Sumber: https://github.com/rackt/react-router/blob/master/docs/guides/advanced/ComponentLifecycle.md

Komentar (2)
import { Route, Redirect } from "react-router-dom";

class App extends Component {
  render() {
    return (
      <div>



//rest of code here

ini akan membuatnya sehingga ketika anda memuat server pada host lokal itu akan kembali mengarahkan anda ke /sesuatu

Komentar (0)

Bagi mereka yang datang ke 2017, ini adalah solusi baru dengan IndexRedirect:





Komentar (1)







Komentar (2)

Aku berlari ke dalam masalah yang sama; saya ingin sebuah default route handler jika tidak ada rute handler cocok.

Solusi saya adalah untuk menggunakan wildcard sebagai jalur nilai. ie Juga pastikan itu adalah entri terakhir dalam rute definisi.






Komentar (0)

Metode yang lebih disukai adalah dengan menggunakan bereaksi router IndexRoutes komponen

Anda dapat menggunakannya seperti ini (diambil dari bereaksi router dokumen terkait di atas):





Komentar (0)