我正在学习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。不幸的是,这不起作用:当您浏览页面时,唯一重复调用的函数是渲染,并且在此处设置状态会引发Invariant Violation
错误。
我的问题
- 有没有更好的方法来管理标题?
- 除了依赖路由渲染函数每次将数据传递给回调(这看起来很脏)之外,是否还有其他方法可以跟踪当前页面?