Как установить маршрут по умолчанию на другой маршрут реагировать маршрутизатор

У меня есть следующие:

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

Когда используется маршрут по умолчанию, SearchDashboard неправильно делает, так как любой *мониторинга потребности в предоставляемых в приборной панели.

Я хотел бы, чтобы мой маршрут по умолчанию в графе "Приложения и" Путь к точке маршрута с "searchDashboard и". Это то, что я могу сделать с реагировать маршрутизатор, или я должен использовать обычный JavaScript (для перенаправления страницы) для этого?

В принципе, если пользователь переходит на главную страницу, Я хочу отправить их в панель поиска. Так что я думаю, я'м ищу функция маршрутизатора реагировать эквивалентно окна.расположение.заменить (на"mygreathostname.com/#/dashboards/searchDashboard");`

Комментарии к вопросу (2)
Решение

Вы можете использовать редирект, вместо того, чтобы маршрут по умолчанию

Обновление 2019-08-09, чтобы избежать проблем с обновить используется вместо этого, благодаря Ogglas

Комментарии (5)

Проблема с использованием в <перенаправление=то"/" до="и searchDashboard-то" /> если у вас разные URL-адреса, скажем,/indexDashboard и пользователь нажимает "обновить" или получает ссылку, которая была отправлена к ним, пользователь будет перенаправлен на `/searchDashboard все равно.

Если вы WAN'т предоставить пользователям возможность обновить сайт или отправить URL-адреса, используйте это:

 (

)}/>

Используйте это, если searchDashboard за вход:

 (
  loggedIn ? (

  ) : (

  )
)}/>
Комментарии (1)

Я неправильно пытаюсь создать путь по умолчанию с:


Но это создает два разных пути, которые отображают один и тот же компонент. Это не только бессмысленно, но это может вызвать глюки в UI, то есть, когда вы укладки <ссылка/> элементы, основанные на этом.история.метод isactive()`.

Правильный способ создать маршрут по умолчанию (то есть не маршрут индексом) для использования в <IndexRedirect/>:


Это основано на реагировать-маршрутизатор 1.0.0. См https://github.com/rackt/react-router/blob/master/modules/IndexRedirect.js.

Комментарии (5)

Джонатан'ы ответ Я'т похоже на работу для меня. Я'м с использованием реагируют версии v0.14.0 и реагировать маршрутизатор В1.0.0-RC3 по. Это сделал:

в <компонент IndexRoute={дома}/>.

Так в Евангелии от Матфея's случай, я верю, что он'хочу, чтобы:

в <компонент IndexRoute={SearchDashboard}/>.

Источник: https://github.com/rackt/react-router/blob/master/docs/guides/advanced/ComponentLifecycle.md

Комментарии (2)
import { Route, Redirect } from "react-router-dom";

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



//rest of code here

это позволит сделать так, что при загрузке сервера на локальном хосте он будет направлять вас, чтобы /что-то

Комментарии (0)

Для тех, кто прибывает в 2017, это новое решение с IndexRedirect:





Комментарии (1)

Я столкнулся с аналогичной проблемой, я хотела обработчик маршрута по умолчанию, если ни один обработчик маршрута совпадают.

Мое решение заключается в использовании шаблона в качестве значения путь. т. е. Также убедитесь, что это последняя запись в определении маршрутов.






Комментарии (0)

Предпочтительный способ заключается в использовании маршрутизатор реагировать IndexRoutes компонент

Вам использовать его, как это (взято с реагировать маршрутизатор документов, указанному выше):





Комментарии (0)