React-Router: какова цель IndexRoute?

102

Я не понимаю, какова цель использования IndexRoute и IndexLink . Кажется, что в любом случае приведенный ниже код сначала выбрал бы компонент Home, если не был активирован путь About.

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

против

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

Какая здесь польза / цель первого случая?

Ник Пинеда
источник
Почему было Homeбы выбрано в первом примере, если не путь был /home? Ознакомьтесь с объяснением в документации: github.com/rackt/react-router/blob/master/docs/guides/basics/…
Мишель Тилли
Вы можете представить, что main - это панель навигации, а Home и About - это главные страницы, на которые вы можете нажимать на панели навигации.
Ник Пинеда,
2
В верхнем примере выполняется /рендеринг Appс Homeпереданным дочерним элементом. В нижнем примере, собираемся /бы оказывать Appс ни Home или Aboutне быть вынесено, так как ни один из их путей совпадают.
Мишель Тилли
2
Ооо !!! Не могли бы вы сформулировать это как ответ, чтобы я мог отдать вам должное? Спасибо!
Ник Пинеда,
3
При переходе с v0.13 на v1.0 они изменили название с DefaultRouteна IndexRoute. Я считаю, что «по умолчанию» лучше описывает цель. github.com/rackt/react-router/blob/master/…
Кларки

Ответы:

101

В верхнем примере выполняется /рендеринг Appс Homeпереданным дочерним элементом. В нижнем примере, собирается /бы оказывать Appс ни Home , ни Aboutне быть вынесено, так как ни один из их пути совпадают.

Для более старых версий React Router дополнительная информация доступна на странице Index Routes и Index Links соответствующей версии . Начиная с версии 4.0, React Router больше не использует IndexRouteабстракцию для достижения той же цели.

Мишель Тилли
источник
3
Итак, что мы можем использовать на практике?
Seasonqwe
1
Например, мы можем создать один родительский контейнер, несколько дочерних маршрутов и установить один из этих дочерних маршрутов по умолчанию (IndexRoute). Или, если нам не нужен дочерний маршрут по умолчанию и нужно намекнуть пользователю, что он должен что-то выбрать (тогда без IndexRoute)
Ольга Гнатенко
1
@ AlexHopeO'Connor Спасибо, я обновил вторую половину ответа
Мишель Тилли,
что именно прошло в детстве? загрузка в фоновом режиме? возможность получить доступ к реквизиту? Другой?
StLia