Vue Router - 使用 Vue 2 Composition API 获取路由参数

Posted

技术标签:

【中文标题】Vue Router - 使用 Vue 2 Composition API 获取路由参数【英文标题】:Vue Router - Get route params using the Vue 2 Composition API 【发布时间】:2021-06-23 05:25:11 【问题描述】:

我正在使用 Vue 2 Composition API 并希望在我的 setup() 方法中从 Vue 路由器访问路由参数。

如Vue Router documentation中所述:

由于我们无法访问setup 内部的this,因此我们无法再直接访问this.$routerthis.$route。相反,我们使用useRouter 函数:

import  useRouter, useRoute  from 'vue-router'

export default 
  setup() 
    const router = useRouter()
    const route = useRoute()

    function pushWithQuery(query) 
      router.push(
        name: 'search',
        query: 
          ...route.query,
        ,
      )
    
  ,

很遗憾,Vue 2 的 Vue 路由器中不提供此方法。我在这里有哪些选项以及如何使用 Vue 2 组合 API 访问我的路由参数?

【问题讨论】:

【参考方案1】:

在 vue 2 组合 api 中,您在设置上下文中具有引用根组件的 root 属性,尝试使用它而不是 this

export default 
  setup(props,context) 
    const router = context.root.$router;
    const route = context.root.$route;

    function pushWithQuery(query) 
      router.push(
        name: 'search',
        query: 
          ...route.query,
        ,
      )
    
  ,

【讨论】:

【参考方案2】:

vue2-helpers 包有一些工具可以解决你的问题。

import  useRoute  from 'vue2-helpers/vue-router';

const route = useRoute();

【讨论】:

以上是关于Vue Router - 使用 Vue 2 Composition API 获取路由参数的主要内容,如果未能解决你的问题,请参考以下文章

Vite2+vue3+ts 使用 router,layout 搭建页面框架,并做页面自适应

07 vue 之 Vue-router

vue-router2.0组件复用

vue-router的使用

Vue 开发实战生态篇 # 19:Vue Router的使用场景

vue-router源码阅读 内部探究