Реакция-роутер-дом v4. Оболочка <BrowserRouter /> - нужно ли ее включать в дерево приложений? - PullRequest
0 голосов
/ 16 ноября 2018

Итак, я заметил одну интересную вещь, когда использовал оболочку <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 запускается нормально ...

Кто-нибудь знает, что это за магия, и плохо ли ее удалять или нет?

1 Ответ

0 голосов
/ 26 ноября 2018

Не уверен насчет «магии», но я рекомендую использовать <Router> вместо <BrowserRouter> в зависимости от того, что указано в API реагирующего маршрутизатора, который гласит: «Наиболее распространенный вариант использования низкоуровневый <Router> предназначен для синхронизации пользовательской истории с библиотекой управления состояниями, такой как Redux или Mobx. " Вот ссылка . , если вы хотите узнать больше.

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