【发布时间】:2014-11-25 18:08:13
【问题描述】:
我正在学习 React 并使用 React-router。我正在构建的应用程序是一个移动风格的应用程序,带有顶部导航菜单和下面的内容部分。当我浏览应用页面时,我想在菜单栏中添加一个页面“标题”,以识别您当前所在的页面。
我的路线:
<Routes>
<Route name='home' path='/' handler={HomePage}>
<Route name='product-list' path='products/' handler={ProductList}/>
<Route name='product-detail' path='product/:slug/' handler={ProductDetail} addHandlerKey={true}/>
</Route>
</Routes>
HomePage.render:
<div className="container">
<NavigationMenu />
<div className="contents">
{this.props.activeRouteHandler()}
</div>
</div>
NavigationMenu.render:
<div className="navigationMenu">
<div className="navigationMenuTitle>{this.props.title}</div>
</div>
我的问题
到 HomePage 的子路由需要根据 Ajax 调用返回的内容设置标题。
我曾考虑为每条路线添加回调,将标题传递回它们的父类,然后再将这些数据传递给 NavigationMenu。不幸的是,这不起作用:当您浏览页面时,唯一重复调用的函数是 render 并且在此处设置状态会引发 Invariant Violation 错误。
我的问题
- 有没有更好的方法来管理标题?
- 除了依靠路由渲染函数每次都将数据传递给回调(这看起来很脏)之外,还有其他方法可以跟踪当前页面吗?
【问题讨论】:
标签: reactjs react-router