javascript - React-Router:使用类组件处理深度嵌套的路由
问题描述
试图弄清楚如何在深度嵌套的类组件路由中导航,但我对如何正确地做到这一点有点迷茫。
所以这里是组件的一般架构:
--Component L
|_Component L1
|_Component L2
--Component S (accessible after authentication)
|_Component S1
|_Component S1.1
|_Component S1.1.1
|_Component S1.1.2
|_Component S2
|_Component S2.1
|_Component S2.2
|_Component S2.3
|_Component S2.3.1
|_Component S3
|_Component S3.1
从技术上讲,嵌套组件可能比显示的要深得多。一般的想法是组件L
和S
是较小组件的父容器(或锚点);S1
、S2
、 和等S3
组件是不同类别的组件,每个类别下的组件更多。在任何时候,最顶层的组件S
都是可见的,并提供按钮/选项卡来导航到组件S1
、S2
和之一,这些组件S3
应该canvas div
在组件内绘制S
。canvas div
每次路由更改都应仅更新其中的内容。
L
目前,要在和之间导航S
,我进行了以下Switch
设置:
<Switch>
<Route to='/L' component={L} />
<AuthRoute to='/S' component={S} />
</Switch>
和组件S
看起来大致是这样的:
export default class S extends Component {
<Menu>
<Button>to S1</Button>
<Button>to S2</Button>
<Button>to S3</Button>
</ Menu>
<div>
<Content >
Child components should be drawn in here.
<Content />
</ div>
}
该文档演示了一个使用 的示例useRouteMatch()
,但这仅在功能组件中可用。
如何使用类组件来做到这一点?
编辑:忘了提,但每个子组件都提供了一种返回其正上方父级的方法。
解决方案
<Switch>
<Route to='/L' component={L} />
<AuthRoute to='/S' component={S} />
是你的第一层路由。
你只需要对 L 和 S 组件做同样的事情。
在您的 L 组件中。
<Switch>
<Route to='/L/L1' component={L1} />
<Route to='/L/L2' component={L2} />
</Switch>
在您的 S 组件中。
<Switch>
<Route to='/S/S1' component={S1} />
<Route to='/S/S2' component={S2} />
<Route to='/S/S3' component={S3} />
</Switch>
当层次结构下降时,对每一层执行相同的操作。
推荐阅读
- java - 如何创建自定义订单以对 Java String 电话号码进行排序?
- wordpress - 您没有足够的权限访问此管理页面
- emgucv - Emgu.CV 如何从字节数组读取和保存图像?
- amazon-web-services - 在 Amazon Redshift 和 Amazon RDS 之间查询和连接数据
- ios - 尝试将图像添加到 Firebase 存储,然后将图像位置添加到 Firestore 文档
- c# - 如何在文本文件C#中获取最后两次出现的相同字符串
- hashtable - CS50 Pset 5 哈希表问题
- javascript - 无法让 Bootstrap-vue 表单验证工作
- wordpress - 我的 wordpress 网站已损坏。不知道做什么。尝试了安全模式插件,但没有任何反应
- javascript - 是否可以在 JS 中使用没有 Await 的 Async?