vue获取url上参数的常见方法小结

 更新时间:2025年11月06日 08:43:41   作者:悟能不能悟  
这篇文章主要为大家详细介绍了vue获取url上参数的几种常用方法,这些方法主要取决于你的使用场景,下面小编就和大家详细介绍一下吧

在 Vue 中获取 URL 参数有几种常用方法,具体取决于你的使用场景:

1. 使用 Vue Router(推荐)

查询参数(Query Parameters)

// URL: http://example.com/user?id=123&name=john

// 在组件中获取
export default {
  created() {
    const id = this.$route.query.id;     // "123"
    const name = this.$route.query.name; // "john"
    console.log(id, name);
  }
}

路由参数(Route Params)

// 路由配置
const routes = [
  { path: '/user/:id', component: User }
]

// URL: http://example.com/user/123
export default {
  created() {
    const id = this.$route.params.id; // "123"
    console.log(id);
  }
}

使用组合式 API(Vue 3)

<template>
  <div>用户ID: {{ userId }}</div>
</template>

<script setup>
import { useRoute } from 'vue-router'

const route = useRoute()
const userId = route.params.id || route.query.id
</script>

2. 原生 JavaScript 方法

使用 URLSearchParams

export default {
  methods: {
    getUrlParams() {
      const urlParams = new URLSearchParams(window.location.search)
      return {
        id: urlParams.get('id'),
        name: urlParams.get('name')
      }
    }
  },
  created() {
    const params = this.getUrlParams()
    console.log(params.id, params.name)
  }
}

传统 URL 解析

export default {
  methods: {
    getQueryVariable(variable) {
      const query = window.location.search.substring(1)
      const vars = query.split('&')
      for (let i = 0; i < vars.length; i++) {
        const pair = vars[i].split('=')
        if (pair[0] === variable) {
          return decodeURIComponent(pair[1])
        }
      }
      return null
    }
  },
  created() {
    const id = this.getQueryVariable('id')
    const name = this.getQueryVariable('name')
  }
}

3. 监听参数变化

export default {
  watch: {
    '$route.query': {
      handler(newQuery) {
        // 查询参数变化时执行
        console.log('参数变化:', newQuery)
      },
      immediate: true // 立即执行一次
    },
    
    '$route.params': {
      handler(newParams) {
        // 路由参数变化时执行
        console.log('路由参数变化:', newParams)
      },
      immediate: true
    }
  }
}

4. 完整示例

<template>
  <div>
    <h2>用户信息</h2>
    <p>用户ID: {{ userId }}</p>
    <p>用户名: {{ userName }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      userId: null,
      userName: null
    }
  },
  created() {
    this.getParams()
  },
  watch: {
    '$route': 'getParams' // 路由变化时重新获取参数
  },
  methods: {
    getParams() {
      // 优先使用路由参数,其次使用查询参数
      this.userId = this.$route.params.id || this.$route.query.id
      this.userName = this.$route.query.name
      
      console.log('用户ID:', this.userId)
      console.log('用户名:', this.userName)
    }
  }
}
</script>

使用建议

  • 优先使用 Vue Router​ - 更加集成和方便
  • 考虑参数类型转换​ - URL 参数都是字符串,需要时进行类型转换
  • 处理参数不存在的情况​ - 添加适当的默认值或错误处理
  • 监听参数变化​ - 如果需要在同一组件内响应参数变化

选择哪种方法主要取决于你的项目是否使用了 Vue Router 以及具体的业务需求。

到此这篇关于vue获取url上参数的常见方法小结的文章就介绍到这了,更多相关vue获取url参数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • vue2.0 watch里面的 deep和immediate用法说明

    vue2.0 watch里面的 deep和immediate用法说明

    这篇文章主要介绍了vue2.0 watch里面的 deep和immediate用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-10-10
  • Vue3+Element Plus进行图片加载优化全攻略

    Vue3+Element Plus进行图片加载优化全攻略

    在Web开发中,未优化的图片会导致很多问题,本文将为大家介绍一下Vue3如何通过Element Plus进行图片加载优化,希望对大家有所帮助
    2025-03-03
  • 详解关于vue-area-linkage走过的坑

    详解关于vue-area-linkage走过的坑

    这篇文章主要介绍了详解关于vue-area-linkage走过的坑,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-06-06
  • vue better scroll 无法滚动的解决方法

    vue better scroll 无法滚动的解决方法

    better scroll可以实现轮播图和页面滚动,是移动端滚动插件,这篇文章主要介绍了vue better scroll 无法滚动的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-06-06
  • Vue from-validate 表单验证的示例代码

    Vue from-validate 表单验证的示例代码

    本篇文章主要介绍了Vue from-validate 表单验证的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • vue3的介绍和两种创建方式详解(cli和vite)

    vue3的介绍和两种创建方式详解(cli和vite)

    这篇文章主要介绍了vue3的介绍和两种创建方式(cli和vite),vue3对比vue2带来的性能提升有很多优势,总体来说Vue 3在性能、开发体验和代码组织方面都有所改进,使得它更加适合于大型、复杂的应用程序开发,需要的朋友可以参考下
    2023-04-04
  • 浅谈vue获得后台数据无法显示到table上面的坑

    浅谈vue获得后台数据无法显示到table上面的坑

    这篇文章主要介绍了浅谈vue获得后台数据无法显示到table上面的坑,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-08-08
  • vue动态绑定多个class以及带上三元运算或其他条件

    vue动态绑定多个class以及带上三元运算或其他条件

    这篇文章主要介绍了vue动态绑定多个class以及带上三元运算或其他条件,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-04-04
  • django+vue项目搭建实现前后端通信

    django+vue项目搭建实现前后端通信

    本文主要介绍了django+vue项目搭建实现前后端通信,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02
  • Vue对象的组成和挂载方式详解

    Vue对象的组成和挂载方式详解

    这篇文章主要介绍了Vue对象的基本组成和Vue对象挂载的几种方式,文中通过代码示例给大家介绍的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-07-07

最新评论