Я использую реагирующий маршрутизатор v4 с mobx, и я столкнулся с очень раздражающей ошибкой.
Это мой index.js
const history = createHashHistory();
render(
<Provider history={history} {...stores}>
<Router history={history}>
<Application />
</Router>
</Provider>, document.getElementById('root')
)
Внутри приложения у меня есть компонент Menu с навигационными ссылками и Body, где у меня есть переключатель
<Switch>
<Route path='/somecomponent/' exact={true} component={SomeComponent} />
{ other routes>}
</Switch>
И приложение, и тело имеют @withRouter, поэтому маршрутизация работает нормально, но
каждый раз, когда я перемещаюсь к / somecomponent, создается новый экземпляр SomeComponent.
Это конструктор SomeComponent:
class SomeComponent extends React.Component {
constructor(props){
super(props);
this.store = new SomeComponentStore();
console.log('reinitialising')
}
И да, console.log запускается каждый раз, когда я иду по этому маршруту, и создается новое хранилище (именно так я и заметил проблему). Все остальные компоненты внутри этого коммутатора ведут себя так же.
Кто-нибудь может объяснить мне, в чем причина проблемы и как ее исправить?