У меня есть следующие:
<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");`
Вы можете использовать редирект, вместо того, чтобы маршрут по умолчанию
<Redirect from="/" to="searchDashboard" />
Обновление 2019-08-09, чтобы избежать проблем с обновить используется вместо этого, благодаря Ogglas
<Redirect exact from="/" to="searchDashboard" />
Проблема с использованием в <перенаправление=то"/" до="и searchDashboard-то" /> если у вас разные URL-адреса, скажем,
/indexDashboard и пользователь нажимает "обновить" или получает ссылку, которая была отправлена к ним, пользователь будет перенаправлен на `/searchDashboard все равно.
Если вы WAN'т предоставить пользователям возможность обновить сайт или отправить URL-адреса, используйте это:
<Route exact path="/" render={() => (
<Redirect to="/searchDashboard"/>
)}/>
Используйте это, если searchDashboard
за вход:
<Route exact path="/" render={() => (
loggedIn ? (
<Redirect to="/searchDashboard"/>
) : (
<Redirect to="/login"/>
)
)}/>
Я неправильно пытаюсь создать путь по умолчанию с:
<IndexRoute component={DefaultComponent} />
<Route path="/default-path" component={DefaultComponent} />
Но это создает два разных пути, которые отображают один и тот же компонент. Это не только бессмысленно, но это может вызвать глюки в UI, то есть, когда вы укладки <ссылка/>
элементы, основанные на этом.история.метод isactive()`.
Правильный способ создать маршрут по умолчанию (то есть не маршрут индексом) для использования в <IndexRedirect/>
:
<IndexRedirect to="/default-path" />
<Route path="/default-path" component={DefaultComponent} />
Это основано на реагировать-маршрутизатор 1.0.0. См https://github.com/rackt/react-router/blob/master/modules/IndexRedirect.js.
Джонатан'ы ответ Я'т похоже на работу для меня. Я'м с использованием реагируют версии v0.14.0 и реагировать маршрутизатор В1.0.0-RC3 по. Это сделал:
в <компонент IndexRoute={дома}/>
.
Так в Евангелии от Матфея's случай, я верю, что он'хочу, чтобы:
в <компонент IndexRoute={SearchDashboard}/>
.
Источник: https://github.com/rackt/react-router/blob/master/docs/guides/advanced/ComponentLifecycle.md
import { Route, Redirect } from "react-router-dom";
class App extends Component {
render() {
return (
<div>
<Route path='/'>
<Redirect to="/something" />
</Route>
//rest of code here
это позволит сделать так, что при загрузке сервера на локальном хосте он будет направлять вас, чтобы /что-то
Для тех, кто прибывает в 2017, это новое решение с IndexRedirect
:
<Route path="/" component={App}>
<IndexRedirect to="/welcome" />
<Route path="welcome" component={Welcome} />
<Route path="about" component={About} />
</Route>
<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>
<Redirect from="/*" to="/" />
</Route>
Я столкнулся с аналогичной проблемой, я хотела обработчик маршрута по умолчанию, если ни один обработчик маршрута совпадают.
Мое решение заключается в использовании шаблона в качестве значения путь. т. е. Также убедитесь, что это последняя запись в определении маршрутов.
<Route path="/" component={App} >
<IndexRoute component={HomePage} />
<Route path="about" component={AboutPage} />
<Route path="home" component={HomePage} />
<Route path="*" component={HomePage} />
</Route>
Предпочтительный способ заключается в использовании маршрутизатор реагировать IndexRoutes компонент
Вам использовать его, как это (взято с реагировать маршрутизатор документов, указанному выше):
<Route path="/" component={App}>
<IndexRedirect to="/welcome" />
<Route path="welcome" component={Welcome} />
<Route path="about" component={About} />
</Route>