如何路由到另一个组件并替换当前组件?

时间:2019-03-14 15:49:16

标签: reactjs material-ui

我正在使用ReactJS和MaterialUI进行主题化的消息传递应用程序。我有一个应用栏和一个永久抽屉,并希望在剩余区域中呈现我的收件箱,已发送邮件和新邮件组件。

我使用收件箱中的路由,并在呈现这些组件(/ messages / inbox和/ messages / sent)时使用已发送组件的父组件来更改url。现在,我想在单击收件箱中的“ +”按钮或发送的组件时呈现新的消息组件,取消呈现当前组件,并将URL更改为/ messages / new。

我知道我可以通过设置布尔状态变量来有条件地呈现NewMessage组件,但这仍然不会更改url。

我不确定如何执行此操作,并且需要一些建议。

谢谢。

3 个答案:

答案 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中的父/子关系,但是这样做能够解决我的问题。

感谢大家的宝贵时间。