【发布时间】:2016-10-11 21:02:13
【问题描述】:
这在某种程度上是this thread 的延续,因为我找到了一种更好的方式来表达我的问题。
我想要做的就是按下侧面菜单上的一个按钮,这将在屏幕的另一部分切换一个反应组件。目前我的应用程序包含嵌套路由,但我不知道如何从嵌套菜单更新组件。
这是我正在尝试做的画:
基本上,在我单击的每个选项中,我都希望在 <HelpPanel/> 部分呈现不同的组件,或者至少需要完全不同的信息(我有不同的图表、图像等需要显示)。
最初我试图通过嵌套路由来完成它,但达到了我被卡住的地步,不知道如何根据用户单击的项目更新我的<HelpPanel/> 组件。这是当前的相关代码:
//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
导出类 HelpPanel 扩展组件{
render(){
return (
<div>{this.props.params.helpOption}</div>
);
}
}
导出类帮助扩展组件{
渲染(){
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>
);
} }
【问题讨论】:
-
我是 React 的新手,但我一直在使用 Redux。你会在收听消息的内容中做什么,然后你可以更新它的状态,这反过来会当然重绘它的内容。然后你需要做的就是从按钮发送一条消息来设置你想要的状态。例如 Action.setView('option1');
-
@Keith 我希望有一种方法可以在避免 Redux 的同时做到这一点,但我越来越觉得我无法逃脱它了。感谢您的建议!
标签: javascript reactjs react-router single-page-application