React-Router: Mục đích của IndexRoute là gì?


102

Tôi không hiểu mục đích của việc sử dụng IndexRouteIndexLink . Có vẻ như trong mọi trường hợp, mã dưới đây sẽ chọn thành phần Trang chủ trước trừ khi đường dẫn Giới thiệu được kích hoạt.

<Route path="/" component={App}>
  <IndexRoute component={Home}/>
  <Route path="about" component={About}/>
</Route>

vs

<Route path="/" component={App}>
  <Route path="home" component={Home}/>
  <Route path="about" component={About}/>
</Route>

Lợi ích / mục đích ở đây của trường hợp đầu tiên là gì?


Tại sao lại Homeđược chọn trong ví dụ đầu tiên, trừ khi là đường dẫn /home? Xem giải thích trong tài liệu: github.com/rackt/react-router/blob/master/docs/guides/basics/…
Michelle Tilley

Bạn có thể tưởng tượng rằng chính là một thanh điều hướng và Trang chủ và Giới thiệu là trang chính mà bạn có thể nhấp qua trên thanh điều hướng.
Nick Pineda

2
Trong ví dụ trên cùng, going to /sẽ hiển thị Appvới Homepass khi còn nhỏ. Trong ví dụ dưới cùng, /sẽ hiển thị Appkhông Home hoặc khôngAbout được hiển thị, vì cả hai đường dẫn của chúng đều không khớp.
Michelle Tilley

2
Ôi !!! Bạn có thể đặt nó như một câu trả lời để tôi có thể ghi công cho bạn? Cảm ơn bạn!
Nick Pineda

3
Trong sự thay đổi từ v0.13 thành v1.0, họ đã đổi tên từ DefaultRoutethành IndexRoute. Tôi thấy rằng 'mặc định' mô tả tốt hơn mục đích. github.com/rackt/react-router/blob/master/…
Clarkie

Câu trả lời:


101

Trong ví dụ trên cùng, going to /sẽ hiển thị Appvới Homepass khi còn nhỏ. Trong ví dụ dưới cùng, đi đến /sẽ hiển thị Appkhông hiển thị Homecũng không Aboutđược hiển thị, vì cả hai đường dẫn của chúng đều không khớp.

Đối với các phiên bản cũ hơn của Bộ định tuyến React, có thêm thông tin trên trang Các tuyến chỉ mục và Liên kết chỉ mục của phiên bản được liên kết . Bắt đầu từ phiên bản 4.0, React Router không còn sử dụng IndexRoutetrừu tượng để đạt được mục tiêu tương tự.


3
Vì vậy, những gì chúng ta có thể sử dụng tính năng này trong thực tế?
seasonqwe

1
Ví dụ: chúng ta có thể tạo một vùng chứa mẹ, một số tuyến con và đặt một trong các tuyến con này làm mặc định (IndexRoute). Hoặc, nếu chúng ta không cần một lộ trình con mặc định, và cần phải gợi ý cho người dùng biết ông là chọn một cái gì đó (không IndexRoute sau đó)
Olga Gnatenko

1
@ AlexHopeO'Connor Cảm ơn, tôi đã cập nhật vào nửa cuối của câu trả lời
Michelle Tilley

những gì đã qua khi còn là một đứa trẻ có nghĩa là chính xác? tải trên nền? có thể truy cập đạo cụ? khác?
StLia
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.