ConnectedRouter перенаправляет на '/' при перезагрузке страницы при первом рендере - PullRequest
1 голос
/ 06 июня 2019

У меня есть приложение React-Redux с React-Router и connected-react-router (чтобы иметь возможность изменять местоположение в действиях с избыточностью):

const main = () => {
  hydrate(
    <AppContainer warnings={false}>
      <Provider store={store}>
        <ConnectedRouter history={history}>
          <Switch>
            {renderRoutes(routes)}
          </Switch>
        </ConnectedRouter>
      </Provider>
    </AppContainer>,
    mountApp
  );
};

Чтобы изменить местоположение в действиях с избыточностью, я делаю это:

import { push } from 'connected-react-router';
...
export const gotoProjects = () => {
  return async dispatch => {
    dispatch(push('/projects'));
  };
};

Это работает нормально, но я сталкиваюсь с поведением, которое я не понимаю:

Когда я запускаю местоположение с помощью действия избыточности, все работает нормально.Но когда я перезагружаю страницу (= обновление браузера) с помощью url /projects, тогда отправляется действие @@router/LOCATION_CHANGE в /.

И это изменение местоположения происходит только в режиме production.В режиме developmentreact-hot-loader) URL-адрес загружается правильно.

Если я заменил ConnectedRouter на BrowserRouter с react-router-dom, то все нормально в режимах production и development.

При начальной визуализации маршрута объект истории выглядит так (как и ожидалось):

{
  "history": {
    "length": 6,
    "action": "POP",
    "location": {
      "pathname": "/projects",
      "search": "",
      "hash": ""
    }
  }
}

Но каким-то образом ConnectedRouter выполняет перенаправление.

ЛюбойПриветствуем вас!


Отредактировано: вот код маршрута:

const routes = [
  {
    path: '/',
    exact: true,
    component: Home,
  },
  {
    path: '/projects',
    exact: true,
    component: Projects,
  },

  ...
];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...