vue3在路由里取参数几种常见的方法

 更新时间:2025年06月05日 10:49:50   作者:用心去追梦  
这篇文章主要给大家介绍了关于vue3在路由里取参数几种常见的方法,可使用$route(OptionsAPI)、useRoute(CompositionAPI)及watch监听,动态参数通过params获取,查询参数用query提取,需要的朋友可以参考下

在 Vue 3 中,使用 Vue Router 获取路由参数有多种方式。以下是几种常见的方法:

1. 通过 this.$route 获取(Options API)

如果你使用的是 Options API,可以通过 this.$route 访问路由对象,并从中提取参数。

export default {
  mounted() {
    // 获取动态路由参数
    const id = this.$route.params.id;
    console.log('Route Param:', id);

    // 获取查询参数
    const queryParam = this.$route.query.someQueryParam;
    console.log('Query Param:', queryParam);
  }
};

2. 通过 useRoute 获取(Composition API)

在 Composition API 中,可以使用 useRoute 钩子来获取路由信息。

import { useRoute } from 'vue-router';

export default {
  setup() {
    const route = useRoute();

    // 获取动态路由参数
    const id = route.params.id;
    console.log('Route Param:', id);

    // 获取查询参数
    const queryParam = route.query.someQueryParam;
    console.log('Query Param:', queryParam);

    return { id, queryParam };
  }
};

3. 监听参数变化

如果路由参数可能会发生变化(例如用户导航到同一个路由但参数不同),你需要监听参数的变化。

使用 watch

import { useRoute, watch } from 'vue-router';
import { ref } from 'vue';

export default {
  setup() {
    const route = useRoute();
    const id = ref(route.params.id);

    // 监听路由参数变化
    watch(
      () => route.params.id,
      (newId) => {
        id.value = newId;
        console.log('Updated Route Param:', newId);
      }
    );

    return { id };
  }
};

4. 动态路由参数示例

假设你的路由配置如下:

const routes = [
  {
    path: '/user/:id',
    component: UserComponent
  }
];
  • 动态参数 id 可以通过 route.params.id 获取。
  • 查询参数(如 /user/123?name=John)可以通过 route.query.name 获取。

5. 完整示例

以下是一个完整的示例,展示如何在组件中获取和监听路由参数:

<template>
  <div>
    <p>User ID: {{ id }}</p>
    <p>Query Param: {{ queryParam }}</p>
  </div>
</template>

<script>
import { useRoute, watch } from 'vue-router';
import { ref } from 'vue';

export default {
  setup() {
    const route = useRoute();
    const id = ref(route.params.id);
    const queryParam = ref(route.query.name);

    // 监听路由参数变化
    watch(
      () => route.params.id,
      (newId) => {
        id.value = newId;
      }
    );

    // 监听查询参数变化
    watch(
      () => route.query.name,
      (newName) => {
        queryParam.value = newName;
      }
    );

    return { id, queryParam };
  }
};
</script>

注意事项

  • 动态路由参数 vs 查询参数

    • 动态路由参数:定义在路径中的参数(如 /user/:id)。
    • 查询参数:URL 中的查询字符串(如 /user?id=123&name=John)。
  • 参数变化时重新加载数据
    如果路由参数发生变化,但组件没有重新加载(因为复用了相同的组件实例),需要手动监听参数变化并更新数据。

希望这些内容能帮助你顺利在 Vue 3 中获取路由参数!

总结

到此这篇关于vue3在路由里取参数几种常见的方法的文章就介绍到这了,更多相关vue3路由取参数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • vue中的.sync修饰符用法及原理分析

    vue中的.sync修饰符用法及原理分析

    这篇文章主要介绍了vue中的.sync修饰符用法及原理分析,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-04-04
  • vue vuex vue-rouert后台项目——权限路由(适合初学)

    vue vuex vue-rouert后台项目——权限路由(适合初学)

    这篇文章主要介绍了vue vuex vue-rouert后台项目——权限路由,通过本文可以很清除的捋清楚vue+vuex+vue-router的关系,本版本非常简单,适合初学者,需要的朋友可以参考下
    2017-12-12
  • Vue + Element UI图片上传控件使用详解

    Vue + Element UI图片上传控件使用详解

    这篇文章主要为大家详细介绍了Vue + Element UI图片上传控件的使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-08-08
  • 浅谈Vue render函数在ElementUi中的应用

    浅谈Vue render函数在ElementUi中的应用

    今天小编就为大家分享一篇浅谈Vue render函数在ElementUi中的应用,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-09-09
  • vue spa应用中的路由缓存问题与解决方案

    vue spa应用中的路由缓存问题与解决方案

    这篇文章主要介绍了vue spa应用中的路由缓存问题与解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-05-05
  • 对Vue.js之事件的绑定(v-on: 或者 @ )详解

    对Vue.js之事件的绑定(v-on: 或者 @ )详解

    今天小编就为大家分享一篇对Vue.js之事件的绑定(v-on: 或者 @ )详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-09-09
  • Vue3封装 Message消息提示实例函数详解

    Vue3封装 Message消息提示实例函数详解

    这篇文章主要介绍了Vue3封装 Message消息提示实例函数,具有一定的实用价值,需要的朋友可以参考下,希望能够给你带来帮助
    2021-09-09
  • vue3.0翻牌数字组件使用方法详解

    vue3.0翻牌数字组件使用方法详解

    这篇文章主要为大家详细介绍了vue3.0翻牌数字组件使用方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • Vue的百度地图插件尝试使用

    Vue的百度地图插件尝试使用

    本篇文章主要介绍了Vue的百度地图插件尝试使用,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • Vue实现图书管理案例

    Vue实现图书管理案例

    这篇文章主要为大家详细介绍了Vue实现图书管理案例,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-01-01

最新评论