#javascript #reactjs #react-jsx
#javascript #reactjs
Вопрос:
Я пытаюсь разместить панель навигации в верхней части всех моих страниц. Вот маршрутизатор:
App = React.createClass({
render: function() {
<div>
<NavBar />
<Locations hash className="Router">
<Location path="/" handler={MainPage} />
<Location path="/help" handler={HelpPage} />
<Location path="/about" handler={AboutPage} />
<NotFound handler={NotFoundPage} />
</Locations>
</div>
}
});
Обратите внимание на параметр hash в Locations
теге. Когда я использую маршрутизатор как таковой, ссылки в <NavBar />
компоненте не используют хэши. Однако, если я включу <NavBar />
в каждый из моих отдельных компонентов, то связывание хэша будет работать так, как ожидалось. Есть ли хоть одно место, куда я могу включить <NavBar />
так, чтобы оно отображалось на всех страницах, отображаемых маршрутизатором?
Ответ №1:
Решается путем переключения маршрутизаторов с компонента react-router на react-router.
var App = React.createClass({
render: function() {
return (
<div>
<NavBar />
{this.props.activeRouteHandler}
</div>
);
}
});
React.renderComponent((
<Route handler={App}>
<Route name="main" path="/" handler={MainPage}/>
<Route name="help" handler={HelpPage}/>
<Route name="about" handler={AboutPage}/>
<Route name="notfound" path="*" handler={NotFoundPage}/>
</Route>
), document.body);
Комментарии:
1. Пожалуйста, включите ваш текущий код, чтобы он мог помочь другим людям, которые находят этот вопрос.
2. обратите внимание, что API изменился на
this.props.activeRouteHandler()
🙂