头图

vue3 router 提供了一个方法,可以获得当前路由的所有直属父节点,例如:
image.png
获取方法如下:

const route = useRoute();
console.log("路由信息", route.matched);

原理:
Vue Router在实现matched数组时,主要是通过递归匹配路由的方式来获取当前路由及其父路由的信息。当导航到某个路由时,Vue Router会从路由配置中找到匹配该路径的路由记录,然后逐级向上遍历父路由,直到找到根路由为止,将所有匹配到的路由记录组成一个数组,这个数组就是matched
具体来说,实现matched数组的过程包括以下几个步骤:

  1. 导航到目标路由。
  2. 根据路由配置,找到与当前路径匹配的路由记录。
  3. 将匹配到的路由记录以及它们的父路由记录依次添加到matched数组中,直到达到根路由。
  4. 将matched数组挂载到路由对象上,以便在组件中访问。

这样,无论是在嵌套路由结构中的任何一个子路由,都可以通过访问matched数组来获取到当前路由及其父路由的信息。
总的来说,Vue Router通过递归遍历路由配置来实现matched数组,使得在组件中可以方便地获取到当前路由及其父路由的信息,从而实现了灵活的路由处理和组件渲染。


兔子先森
380 声望16 粉丝

致力于新技术的推广与优秀技术的普及。