这篇“vue3怎么获取url地址参数”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“vue3怎么获取url地址参数”文章吧。
vue3获取url地址参数
import { useRouter, useRoute } from 'vue-router'; setup() { let router = useRouter(); let route = useRoute(); } function GetRequest(value) { var url = decodeURI(window.location.search); //?id="123456"&name="www"; var object = {}; if (url.indexOf("?") != -1)//url中存在问号,也就说有参数。 { var str = url.substr(1); //得到?后面的字符串 var strs = str.split("&"); //将得到的参数分隔成数组[id="123456",name="www"]; for (var i = 0; i < strs.length; i++) { object[strs[i].split("=")[0]] = strs[i].split("=")[1];//得到{id:'123456',name:'www'} } } return object[value]; }
附录:Vue3获取地址栏参数
Vue3 获取地址栏参数有两个方式:查询参数和路径参数。
Vue3获取地址栏参数是从路由router中获取,查询参数和路径参数获取方式不一样。
一、查询参数
比如地址 http://127.0.0.1:5173/?code=123123,
我们要获取code参数可以路由router获取,注意是
route.query
首先需要在router/index.js中定义好路由
import { createRouter, createWebHistory } from 'vue-router' const router = createRouter({ history: createWebHistory(import.meta.env.BASE_URL), routes: [ { path: '/', name: 'home', component: () => import('../views/home.vue') }, ] }) export default router
然后就可以在组件中通过useRouter获取query参数了
<script setup> import {useRouter} from 'vue-router' const { currentRoute } = useRouter(); const route = currentRoute.value; onMounted(()=>{ let code=route.query.code console.log('code', code) }) </script>
二、路径参数
路径参数指的是参数是拼接在地址栏中的。
比如地址 http://127.0.0.1:5173/123123
最后的123123就是参数。
这种参数首先要定义要路由,在路由中对参数进行命名,下面代码中:code就是命名一个路径参数code
首先需要在router/index.js中定义好路由以及路径参数
<script setup> import {useRouter} from 'vue-router' const { currentRoute } = useRouter(); const route = currentRoute.value; onMounted(()=>{ let code=route.query.code console.log('code', code) }) </script>
接着就可以在home.vue组件中通过路由useRouter得到参数,注意是
route.params
<script setup> import {useRouter} from 'vue-router' const { currentRoute } = useRouter(); const route = currentRoute.value; onMounted(()=>{ let code=route.params.code console.log('code', code) }) </script>
三、注意点
入口页面
App.vue必须定义好
router-view标签,不能图简单将上面定义的home组件直接引入到
App.vue中,如果直接引入走的就不是路由了,因而通过
useRouter也无法获取到路由参数了
如下错误示例:
<template> <div id="app"> <home></home> </div> </template> <script setup> import home from './views/home.vue'; </script>
正确应该是使用
router-view标签
<template> <div id="app"> <router-view></router-view> </div> </template> <script setup> </script>