Vue Router 是 Vue.js 官方的路由管理器,它与 Vue.js 核心深度集成,让构建单页面应用变得轻而易举。在 Vue3 中,我们依然可以使用 Vue Router 来管理路由,并且 Vue3 中引入的 Composition API 为编程式路由导航带来了全新的可能性
编程式路由导航是通过代码来实现页面跳转的一种方式,与使用 组件进行声明式导航不同,编程式导航更加灵活,可以在任何地方触发,适用于诸如按钮点击、表单提交等场景
目前为止,我们的导航区都是使用RouteLink编写的,但是我们使用RouteLink编写的代码,最后在浏览器中展示的都是a标签
接下来我们实现一个需求,点击首页2秒后,我们要跳到娱乐,我们按照之前的思路,我们或许就要写RouterLink了
<script setup lang="ts" name="Home">
import { onMounted } from 'vue'
onMounted(()=>{
setTimeout(()=>{
<RouterLink>
},2000)
})
</script>
因为RouterLink要写在模版里面,所以使用RouterLink是不可行的,如果我们非得实现跳转,我们就需要本节的编程式导航了 老样子我们引入必要的组件useRouter
import { useRouter } from 'vue-router'
之后我们在setTimeout来实现跳转
const router = useRouter()
onMounted(()=>{
setTimeout(()=>{
router.push('/plays')
},2000)
})
运行界面如下
所以说编程式路由导航的使用场景还是十分方便的
接下来我们继续做一个小案例,需求的在英雄左边添加四个button,点击button后可以显示详细信息,和点击名字出现的效果是一样的
<button @click="showPlayDetail(play)">查看英雄</button>
添加完了模版(这里别忘了加(play)),我们需要导入useRouter 之后我们就可push了,但是push里面怎么写,我们可以参考RouterLink中的to的写法
const router = useRouter()
function showPlayDetail(play){
router.push({
name:'Detail',
query:{
id:play.id,
title:play.title,
content:play.content
}
})
}
这里我们会产生一个报错
如果想解决可以使用两种方式,第一种直接在play后面加上:any就可以了 另外一种就是定义一个接口
interface PlayInter{
id:string,
title:string,
content:string
}
Vue2 和 Vue3 中的编程式路由导航在使用方式上有一些区别,这主要是因为 Vue3 引入了 Composition API,以及对内部 API 进行了一些改变。下面是两者之间的主要区别:
综上所述:还是Vue3更加方便一些
通过以上介绍,我们了解了在 Vue3 中如何实现编程式路由导航。编程式路由导航是 Vue.js 开发中常用的技巧之一,能够帮助我们更灵活地控制页面跳转,提升用户体验~~~
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。