无法使用 Vue-Router 获取 URL 中的参数

发布于 2022-09-13 00:44:13 字数 1134 浏览 23 评论 0

今天尝试使用Vue-Router(在Vue-CLI中)获取URL参数时遇到了困难($route.query为空),代码如下。

代码用途:获取URL后携带的参数(如“http://localhost:8080/#/?clie...”中的client_id)

项目文件结构:enter image description here

router/index.js:enter image description here

App.vue(获取 URL 参数的部分代码):enter image description here

这部分代码的运行结果:enter image description here

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

握住我的手 2022-09-20 00:44:13

vue-routermounted触发时暂未完成对 url 的处理,只能取得基础的 path。

解决方案 1:
利用万能的 setTimeout,只需等待 1ms ,让 vue 处理完,router 即可获取到数据。

App.vue

mounted() {
    setTimeout(() => {
        console.log(this.$route.query)
    }, 1)
}

解决方案 2:
利用 Vuex 待 router 正确载入时通知 / 放行对应事件执行。

src/router/index.js

import VueRouter from 'vue-router'
//=> 配置路由
const router = new VueRouter({  routes: [  {  path: '/',  name: 'main',  component: () => import('../views/index/index.vue')  }

// ↓ 解决方案 ↓
router.afterEach((to, from) => {
    router.app.$store.commit( 'global/routerReady', true )
})

App.vue

import { mapGetters } from 'vuex'

export default {
    // ...
    watch: {
       routerReady() {
           console.log('此时,Router 已载入完成。')
           console.log(this.$route.query)
       }
    },
    computed: {
        ...mapGetters('global', ['routerReady'])
    }
}
夜唯美灬不弃 2022-09-20 00:44:13

router/index.js:

const routers = [
  {path:'/', component: Login},
  {path:'/:client_id', component: Login},
]

浏览器访问:http://localhost:8080/123456

获取参数:

let client_id = this.$route.params.client_id
console.log(client_id ) // 结果:123456
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文