解决vue3 useRoute无法获取get参数记录

总结:

使用route.query无法获取到get参数,开发模式代码改动能拿到,但是刷新又没了,需要监听route.query才能拿到get参数。

正文:

我的常规使用方法:

先安装vue-router

npm install vue-router@next

创建src/router/index.js:
 

import { createRouter, createWebHistory } from 'vue-router'

import HelloWorld from '../components/HelloWorld.vue';



const routes = [

  { path: '/', component: HelloWorld },

]



const router = createRouter({

  history: createWebHistory(),

  routes,

})



export default router

在main.js中使用路由:
 

import { createApp } from 'vue'

import App from './App.vue'

import router from './router'



const app = createApp(App)

app.use(router)

app.mount('#app')

最后在组件或页面中使用:
 

<script setup lang="ts">

import { watch  } from 'vue'

import { useRoute } from 'vue-router'

const route = useRoute()



watch(() => route.query, (newQuery) => {

  console.log('query', newQuery)

}, { immediate: true });

</script>

使用watch才能拿到get参数,这里的watch会执行两次:

我的应用场景是:当get参数中canInput等于1时,才显示页面某个元素,我的代码如下:

const canInput = ref(false) // 是否可以输入参数

watch(() => route.query, (newQuery) => {

  console.log('query', newQuery)

  // 使用可选链操作符安全访问 canInput

  if (typeof newQuery?.canInput === 'string') {

    // 将 string 类型断言为 number

    canInput.value = Number(newQuery.canInput) === 1;

  } else {

    canInput.value = false;

  }

}, { immediate: true });

如果只是用route.query,可能拿不到get参数,关于其中的原因我也不太清楚,有知道的朋友可以在评论告知我。

这篇分享文章就到这里啦!如果你对文章内容有疑问或想要深入讨论,欢迎在评论区留言,我会尽力回答。同时,如果你觉得这篇文章对你有帮助,不妨点个赞并分享给其他同学,让更多人受益。

想要了解更多相关知识,可以查看我以往的文章,其中有许多精彩内容。记得关注我,获取及时更新,我们可以一起学习、讨论技术,共同进步。

感谢你的阅读与支持,期待在未来的文章中与你再次相遇!

我的微信公众号:【xdub】,欢迎大家订阅,我会同步文章到公众号上。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一方_self

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值