React-router条件渲染

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了React-router条件渲染相关的知识,希望对你有一定的参考价值。

在React-router的render组件的<Route />函数内部进行条件渲染是否可以?有点这样:

<Route exact path="/form" render={props => (
  this.props.dataLoaded && <Form {...props} />
)} />

这个想法是......我不想挂载Form组件,直到父组件中的某些数据被加载。

我在redux存储中有这些数据,所以基本上我可以在子组件中访问它。问题是我必须检查更改并制作一些额外的东西才能实现我的需要。

在我看来条件渲染是一个更简单的解决方案。我还没有在任何地方看到它所以我不确定它是否在技术上是正确的解决方案。

答案

我有两个解决方案,你可以选择。首先,如果加载了数据,您可以渲染一些组件,否则您可以加载一些其他组件,例如加载组件

<Route exact path="/form" render={props => (
     this.props.dataLoaded === true? <Form {...props} /> : <Loading {...props}/>
)} />

因此,如果dataLoaded等于true,它会使<Form>呈现<Loading>。另一种解决方案是在加载数据时完全呈现路由

{this.props.dataLoaded && <Route exact path="/form" render={props => <Form {...props}/>} /> }

在这种情况下,<Form>只有在dataLoaded为真时才可访问

以上是关于React-router条件渲染的主要内容,如果未能解决你的问题,请参考以下文章

使用 webpack 和 react-router 进行延迟加载和代码拆分不加载

[react-router] React-Router 4怎样在路由变化时重新渲染同一个组件?

react-router 未渲染的嵌套详细信息路由

如何使用 react-router 通过 Route 渲染传递 redux 商店道具?

React-Router & useContext,无限重定向或重新渲染

在 react-router 渲染函数中访问 URL 参数