Я настраиваю проект React, который использует React Router 4 ("response-router-dom": "^ 4.3.1").У меня есть SideBar и NavBar, а затем основная часть приложения (контент), который меняется в зависимости от маршрута.Проблема, с которой я сталкиваюсь, заключается в том, что, когда я связываюсь с новым Компонентом из Компонента внутри контента, Компонент отображает, как я ожидал, вызывая только этот Компонент componentDidMount()
.Однако когда SideBar меняет маршрут, весь компонент приложения перемонтируется, и снова вызывается его componentDidMount()
.
Компонент Root создает BrowserRouter
<BrowserRouter>
<Switch>
<Route path="/login" component={Login}/>
<Route path="/register" component={Register}/>
<Route component={App}/>
</Switch>
</BrowserRouter>
Приложение затем создает SideBar, NavBar и содержимое в пределах маршрута
render() {
return (
<div>
<NavBar user={this.state.user} market={this.state.market}/>
<SideBar user={this.state.user} market={this.state.market}/>
<Route path="/market" render={props => <Market user={this.state.user} market={this.state.market} {...props}/>} exact={true} />
<Route path="/user" render={props => <User user={this.state.user} market={this.state.market} {...props}/>} exact={true} />
</div>
);
}
При нажатии кнопки на странице «Маркет» запускается следующий код, который немедленно отображает страницу пользователя (как я и ожидал).
<Link to={"/user"} className="btn>Link</Link>
Когда я ссылаюсь на эту страницу с боковой панели, хотя, с помощью следующего кода, приложение перемонтирует приложение и снова вызывает componentDidMount()
.
<Link to="/user">
Я пытаюсь избежатьКомпонент componentDidMount () приложения всегда вызывается после первоначального вызова, потому что я настроил его для хранения вошедшего в систему пользователя и других вещей типа init ().Я бы подумал, как я это настрою, это произойдет, но, очевидно, это не так.Как мне изменить настройки маршрутизатора, чтобы сделать это?