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参数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Vue实现将网页内容转换为图片并保存到本地

    Vue实现将网页内容转换为图片并保存到本地

    在 Vue2 项目中,将网页内容转换为图片并保存到本地,常常可以通过第三方库实现,本文为大家整理了常用方案,实现步骤及示例代码,需要的可以了解下
    2025-05-05
  • vue使用Google地图的实现示例代码

    vue使用Google地图的实现示例代码

    这篇文章主要介绍了vue使用Google地图的实现示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-12-12
  • vue中keep-alive的使用及说明

    vue中keep-alive的使用及说明

    这篇文章主要介绍了vue中keep-alive的使用及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-05-05
  • vue中sync语法糖的用法详解

    vue中sync语法糖的用法详解

    Vue的.sync语法糖是一个用于双向数据绑定的指令,可以在子组件中用来监听父组件传递下来的props的变化,本文给大家介绍了在Vue中,.sync语法糖的使用方法,感兴趣的朋友跟着小编一起来学习吧
    2024-01-01
  • vue 函数调用加括号与不加括号的区别

    vue 函数调用加括号与不加括号的区别

    这篇文章主要介绍了vue 函数调用加括号与不加括号的区别,帮助大家更好的理解和使用vue,感兴趣的朋友可以了解下
    2020-10-10
  • element-ui tree 手动展开功能实现(异步树也可以)

    element-ui tree 手动展开功能实现(异步树也可以)

    这篇文章主要介绍了element-ui tree 手动进行展开(异步树也可以),项目中用到了vue的element-ui框架,用到了el-tree组件,需要的朋友可以参考下
    2022-08-08
  • vue登录注册及token验证实现代码

    vue登录注册及token验证实现代码

    在vue单页中,我们可以通过监控route对象,从中匹配信息去决定是否验证token,然后定义后续行为。下面通过实例代码给大家分享vue登录注册及token验证功能,需要的朋友参考下吧
    2017-12-12
  • vue2.0父子组件间传递数据的方法

    vue2.0父子组件间传递数据的方法

    本文通过一个小例子给大家介绍了vue2.0父子组件间传递数据的方法,需要的朋友参考下吧
    2018-08-08
  • Element-UI组件实现面包屑导航栏的示例代码

    Element-UI组件实现面包屑导航栏的示例代码

    面包屑导航栏是一种用户界面组件,用于展示用户在网站或应用中的路径,它包括了从主页到当前页面的链接序列,有助于用户快速了解和导航至上级页面,本文就来介绍一下Element-UI组件实现面包屑导航栏的示例代码,感兴趣的可以了解一下
    2024-09-09
  • Vue3引入腾讯地图包含标注简易操作指南

    Vue3引入腾讯地图包含标注简易操作指南

    这篇文章主要介绍了Vue3引入腾讯地图的相关资料,并实现点击地图添加标注的功能,示例代码提供了添加单个或多个标注的方法,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-09-09

最新评论