我正在使用ReactJS和MaterialUI进行主题化的消息传递应用程序。我有一个应用栏和一个永久抽屉,并希望在剩余区域中呈现我的收件箱,已发送邮件和新邮件组件。
我使用收件箱中的路由,并在呈现这些组件(/ messages / inbox和/ messages / sent)时使用已发送组件的父组件来更改url。现在,我想在单击收件箱中的“ +”按钮或发送的组件时呈现新的消息组件,取消呈现当前组件,并将URL更改为/ messages / new。
我知道我可以通过设置布尔状态变量来有条件地呈现NewMessage组件,但这仍然不会更改url。
我不确定如何执行此操作,并且需要一些建议。
谢谢。
答案 0 :(得分:1)
您可以使用react-router-dom中的Link组件,将其带到/ messages / new组件。您可以进一步了解here。希望这会有所帮助。
答案 1 :(得分:0)
您可以使用<Link to ="/path here" > + </Link>
或
执行点击事件时,您可以使用从历史道具check here传递过来的this.props.history.push("/path")
以编程方式进行导航(请注意,如果道具withRouter info here)不可用,请使用Router导入
并分别添加您的<Route path ="" component={}/>
希望这对您有帮助。
答案 2 :(得分:0)
K个家伙,我知道了。我有一个包含我的应用栏和抽屉的导航组件文件,其中包含到收件箱的路线和发送的组件。在我的收件箱/已发送组件中,我希望有一个指向NewMessage组件的链接,该链接将替换当前的收件箱/已发送组件。我发现,如果在我的导航组件<Route exact path="/messages/new" component={NewMessage} />
中以及在我的收件箱/已发送组件中添加到NewMessage的路由,则添加以下内容:
<Fab color="primary" label="New" component={Link} to="/messages/new">
<AddIcon />
</Fab>
路线很好。也许我仍然不了解ReactJS中的父/子关系,但是这样做能够解决我的问题。
感谢大家的宝贵时间。