Имею следующее:
<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>
При использовании DefaultRoute SearchDashboard отображается некорректно, поскольку любая * Dashboard должна отображаться в Dashboard.
Я хотел бы, чтобы мой DefaultRoute в маршруте «app» указывал на «searchDashboard» маршрута. Могу ли я это сделать с помощью React Router, или мне следует использовать для этого обычный Javascript (для перенаправления страницы)?
В основном, если пользователь переходит на домашнюю страницу, я хочу отправить его вместо этого на панель поиска. Итак, я думаю, я ищу функцию React Router, эквивалентнуюwindow.location.replace("mygreathostname.com/#/dashboards/searchDashboard");
javascript
routes
reactjs
url-redirection
react-router
Мэтью Хербст
источник
источник
Ответы:
Вы можете использовать Redirect вместо DefaultRoute
Обновите 2019-08-09, чтобы избежать проблем с обновлением, используйте это вместо этого, благодаря Ogglas
источник
from='/a' to='/a/:id'
, вам нужно будет использовать ,<Switch>
чтобы включить свой<Redirect>
и<Route>
компонент от реакции-маршрутизатора. Подробнее см документ<Redirect exact from="/" to="/adaptation" />
exact
флаг. В принятом ответе этого нет, поэтому он соответствует [почти] любому маршруту.Проблема с использованием
<Redirect from="/" to="searchDashboard" />
заключается в том, что если у вас другой URL-адрес, скажем,/indexDashboard
и пользователь нажимает кнопку «Обновить» или получает отправленный им URL-адрес, пользователь в/searchDashboard
любом случае будет перенаправлен на него .Если вы не хотите, чтобы пользователи могли обновлять сайт или отправлять URL-адреса, используйте это:
Используйте это, если
searchDashboard
за логином:источник
Я неправильно пытался создать путь по умолчанию с помощью:
Но это создает два разных пути, которые отображают один и тот же компонент. Это не только бессмысленно, но и может вызвать сбои в вашем пользовательском интерфейсе, то есть когда вы стилизуете
<Link/>
элементы на основеthis.history.isActive()
.Правильный способ создания маршрута по умолчанию (который не является маршрутом индекса) - использовать
<IndexRedirect/>
:Это основано на реактивном маршрутизаторе 1.0.0. См. Https://github.com/rackt/react-router/blob/master/modules/IndexRedirect.js .
источник
Route
тем, чем вы уже занималисьIndexRoute
?/
вместо того, чтобы перенаправлять, например, на/home
.<IndexRoute>
. Извините за шум. stackoverflow.com/questions/32706913/… github.com/reactjs/react-router/blob/master/docs/guides/…Ответ Джонатана, похоже, не сработал для меня. Я использую React v0.14.0 и React Router v1.0.0-rc3. Это сделало:
<IndexRoute component={Home}/>
.Итак, в случае Мэтью, я думаю, он хотел бы:
<IndexRoute component={SearchDashboard}/>
.Источник: https://github.com/rackt/react-router/blob/master/docs/guides/advanced/ComponentLifecycle.md
источник
SearchDashboard
будет компонентом, который вы увидите, когда перейдете на домашнюю страницу, но неDashboard
компонентом, который его обертывает, если вы перейдете непосредственно на/dashboard/searchDashboard
. React-router динамически создает иерархию вложенных компонентов на основе маршрутов, соответствующих URL-адресу, поэтому я думаю, что вам действительно нужно перенаправление здесь.это сделает так, что когда вы загружаете сервер на локальный хост, он перенаправит вас на / something
источник
ОБНОВИТЬ : 2020
Вместо использования перенаправления просто добавьте несколько маршрутов в
path
Пример:
источник
Я столкнулся с подобной проблемой; Мне нужен обработчик маршрута по умолчанию, если ни один из обработчиков маршрута не подходит.
Мои решения - использовать подстановочный знак в качестве значения пути. т.е. также убедитесь, что это последняя запись в вашем определении маршрутов.
источник
Для тех, кто приходит в 2017 г., это новое решение с
IndexRedirect
:источник
источник
DefaultRoute
вreact-router
v4?<Route exact path="/" component={Home}/>
. reacttraining.com/react-router/web/example/basicПредпочтительный метод - использовать компонент IndexRoutes реактивного маршрутизатора.
Вы используете это так (взято из документации по маршрутизатору реакции, указанной выше):
источник
Вы используете его таким образом для перенаправления на определенный URL-адрес и визуализации компонента после перенаправления со старого маршрутизатора на новый маршрутизатор.
источник