Должен ли я иметь отдельный history.js для createBrowserHistory? - PullRequest
0 голосов
/ 13 марта 2019

Оглядываясь вокруг, люди, кажется, используют createBrowserHistory в отдельном history.js файле, и мне интересно, какова точная причина создания отдельного файла для этого.

Что я думаю сделать

import { createBrowserHistory } from 'history';

class MySpecialComponent extends Component {
  constructor() {
    super();

    this.history = createBrowserHistory();
  }
}

<Router history={this.history}>
  <div>
    <Route
      path="/"
      render={() => <RootComponent />}
      exact
    />
    <Route path="/confirm" render={() => <ConfirmComponent />} />
  </div>
</Router>

Это плохой подход, чтобы он был внутри конструктора, и я должен создать отдельный history.js, содержащий что-то вроде:

import { createBrowserHistory } from 'history';

export default createBrowserHistory();

И импортировать этот файл в MySpecialComponent

1 Ответ

0 голосов
/ 13 марта 2019

Единственная причина, по которой я создаю history объект отдельно и не использую BrowserRouter, заключается в том, что я хочу сделать history.push или history.replace в каком-то месте, когда у меня нет доступа к реквизитам маршрутизатора. Теперь, если я создаю историю как свойство компонента, я не могу импортировать этот объект history в другие файлы. Поэтому я создаю отдельную history.js и затем могу импортировать эту историю в свое приложение и использовать ее.

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