2016-08-20 5 views
0

У меня есть следующие маршруты:Перенаправление маршрутов программно с использованием имен маршрутов

ReactDOM.render(
     React.createElement(ReactRouter.Router, {history: ReactRouter.hashHistory}, 
      React.createElement(ReactRouter.Route, {path: '/', component: AppController}), 
      React.createElement(ReactRouter.Route, {component: LayoutController}, 
       React.createElement(ReactRouter.Route, {path: '/dashboard', component: DashboardController}), 
       React.createElement(ReactRouter.Route, {path: '/signout', component: UserSignoutController}) 
      ) 
     ) 
    , document.getElementById('content')); 

Это как перенаправить поток приложения:

ReactRouter.browserHistory.push('/dashboard'); 

Это работает, но если я открываю мое приложение на другой машина с другой структурой URL-адресов, и мне нужно изменить пути URL-адресов, я также должен изменить каждый аргумент push.

Есть ли способ перенаправления с использованием имен маршрутов вместо путей?

+1

Я не понимаю, как путь, как это будет по-другому на другой машине. Разве вам не нужно было бы настраивать другой путь на маршруте, если это так? Кстати, это, вероятно, не идеальный способ настройки маршрутов. Если вы не хотите делать это с помощью JSX, я бы предложил вместо этого использовать объекты ['PlainRoute'] (https://github.com/reactjs/react-router/blob/69b163255ca6fc363fe270911b1161378650cc1b/docs/API.md#plainroute) выписывать вызовы 'React.createElement()'. – JMM

ответ

0

В старых версиях можно было перемещаться по имени, но AFAIK больше не работает. На мой взгляд, вам нужно настроить базовое имя истории для разных серверов, то есть префикс маршрута. Учтите, что конечная часть URL-адреса, которая настроена с помощью маршрутизатора-ответчика, исправлена.

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

useRouterHistory(createBrowserHistory)({ basename })

Смежные вопросы