Vue Router+Ts中获取当前路由参数

一个简单的需求,在登录首页不显示导航栏组件。

一种思路,导航栏组件用props参数控制是否显示,每个路由页面引入导航栏组件时给props赋值。
另一种思路,监听路由,当前路由path不是登录页就显示导航栏组件。用v-show或者v-if,因为v-show只渲染一次,能节省芝麻点资源,所以想用v-show。

考虑到每个路由页面引入导航栏组件,感觉原理有点象v-if(不确定,知识基础不牢,凭猜测),所以还是选第二种的v-show。

因为只需要获取当前路由参数,不需要控制路由,所以用route就行。查了不少方法,都是用this.$route,这个在vue3+ts已经不合语法。

能用在vue3+ts的代码是:

<script setup lang="ts">
import {useRoute} from "vue-router";
const route=useRoute()
console.log(route.path)
</script>

取到这个参数值就随便你怎么用了。

如果用了router,就不需要单用route了,对应代码是:

<script setup lang="ts">
import {useRouter} from "vue-router";
const router=useRouter()
console.log(router.currentRoute.value.path)
</script>

在各种文章中突然发现了不需要在script取值,直接在template可用的一种方法,赶紧收录:

<template>
  <Header v-show=" $route.path!=='/' " />
  <router-view/>
</template>

这就象是vue3默认的this.$route的简易用法。

感觉如果在约定路由文件routes.ts中,给每个路径赋上独立的name,用name参数比用path参数更加可靠。

补充:
又用了几天,发现vue3在template里面,不用去ts实例化,可以直接用双引号运行很多script命令,比如
“windows.close()" //关闭页面,firefox支持,chrome不支持。
“window.open(‘about:blank’,‘_self’)” //用空白页代替之前页面,变相关闭,firefox与chrome都支持。
“$router.push(‘/’)” //跳转路由
“document.exitFullscreen()” //退出全屏,进入全屏必须去script用document.documentElement.requestFullscreen()。
一般都是第一级函数或者参数可以直接用,如果再下一层,就要去script实例化操作了。

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值