在学习并编写公司项目时,出现了一个问题。
这是路由文件
左边是侧边栏,是一个公共组件,右侧是“设备资产”的组件
资产名称是<Button><Link to="..." target="_blank">资产名称</Link></Button>
本应该点击跳转之后显示这个页面
但虽然路径改变了,页面却只有一个侧边栏,右侧是空白,打开工具查看发现组件也都是之前的,没有正确显示跳转之后的页面。
后来我发现我的“详情”路由写在了“/”目录后面,我将它移到了前面,发现可以正常跳转了
请问这是怎么回事?
在学习并编写公司项目时,出现了一个问题。
这是路由文件
左边是侧边栏,是一个公共组件,右侧是“设备资产”的组件
资产名称是<Button><Link to="..." target="_blank">资产名称</Link></Button>
本应该点击跳转之后显示这个页面
但虽然路径改变了,页面却只有一个侧边栏,右侧是空白,打开工具查看发现组件也都是之前的,没有正确显示跳转之后的页面。
后来我发现我的“详情”路由写在了“/”目录后面,我将它移到了前面,发现可以正常跳转了
请问这是怎么回事?
如果你的
exact
设置为false,表示的是 非严格匹配;举个例子:如果你的请求的路由是: '/a/b/c';那么他会被匹配到以下路由
/
/a
/a/b
/a/b/c
这里的 第4个路由是你的目标路由, 如果前3个路由的
exact
都是 设置为false
; 并且路由的顺序是在4
的前面。那么前面3个的组件都会被渲染,并且默认的,会把2
当作1
的子页面,3
当作2
的子页面,这样设计的目的,是为了实现路由的嵌套业务。所以你如果不希望这样,要么设置
exact=true
;要么注意顺序。这种场景在模糊匹配的路由中也是存在的。
所以定义路由的时候,一般都是这样,
/a/b
应该放在/a
前面/a/b
放在/a/:id