Итак, я заметил одну интересную вещь, когда использовал оболочку <BrowserRouter>
внутри своей структуры App
. Он не запускает диспетчеризацию действия изменения местоположения (@@router/LOCATION_CHANGE
) при каждом изменении местоположения и не обновляет location
реквизиты в router
объекте внутри Redux
store
, вместо этого запускается только при первоначальном монтировании.
Итак, как выглядит моя структура приложения:
import React from 'react';
import { Provider } from 'react-redux';
import { BrowserRouter, Switch, Route } from 'react-router-dom';
import { ConnectedRouter } from 'connected-react-router';
const AppContainer = ({ store, history }) => {
return (
<Provider store={store}>
<ConnectedRouter history={history}>
<BrowserRouter> // that is one is blocking action location dispatch
<AppLayout>
<Switch location={location}>
<Route exact path='/' component={HelloWorld} />
<Route path='/next' component={StartCoding} />
</Switch>
</AppLayout>
</BrowserRouter>
</ConnectedRouter>
</Provider>
);
};
И что интересно, если я полностью удаляю оболочку <BrowserRouter>
из структуры приложения, диспетчер действий @@router/LOCATION_CHANGE
запускается нормально ...
Кто-нибудь знает, что это за магия, и плохо ли ее удалять или нет?