【发布时间】:2016-10-11 18:41:11
【问题描述】:
我的应用中有几个页面有自己的菜单,当然除了主菜单。我希望每次单击子菜单以呈现不同的组件。
有人告诉我,我可以使用 react-routes 做到这一点,但它达到了我被卡住并且不知道从那里去哪里的地步。这是我当前相关代码的示例:
//app.js
ReactDOM.render(
<Router history={hashHistory}>
<Route path="/" component={App} handler={App}>
<IndexRoute component={Index}/>
<Route path="about" component={About}>
</Route>
<Route path="help" component={Help}>
<Route path="help/:helpOption" component={HelpPanel}/>
</Route>
</Route>
</Router>,
destination
);
//help.js
export class HelpPanel extends Component{
render(){
return (
<div>{this.props.params.helpOption}</div>
);
}
}
export class Help extends Component{
render(){
return (
<Grid>
<Title/>
<Row className="show-grid">
<Col lg={2} md={4} sm={4}>
<HelpMenu/>
</Col>
<Col lg={8} md={8} sm={8}>
{this.props.children || "Please select topic from the menu for more information"}
</Col>
</Row>
</Grid>
);
} }
<HelpMenu/> 组件基本上是一个包含所有选项的侧边菜单,<HelpPanel/> 组件上显示的内容会根据您选择的选项而变化。
我还画了我希望我的屏幕看起来的样子,以防这篇文章不清楚。
最重要的是,我终其一生都无法弄清楚如何根据您选择的菜单选项来更改 HelpPanel 上显示的内容。
【问题讨论】:
-
您在尝试选择菜单上的项目时是否收到 404?将
help/:helpOption设置为路径我认为实际上需要路径为/help/help/:helpOption -
我现在什么都没有,只是警告说没有任何东西符合我当前的路线。这对我来说是意料之中的,因为我不知道什么以及如何将事物与我当前的路线相匹配。
-
错误代码 404 对应于没有匹配的路由,所以我认为问题在于您没有正确设置
HelpPanel的路径。尝试将path从help/:helpOption更改为/help/:helpOption。 -
恐怕它没有改变任何东西:(
-
好的,可以试试把路径改成
:helpOption吗? 应该发生的是嵌套路由使用父路径作为前缀。
标签: javascript reactjs react-router single-page-application