У меня есть приложение 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
.В режиме development
(с react-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,
},
...
];