Vue Router 编程式导航

一、编程式导航 - js方式跳转路由

Vue中,页面有两种导航方式,分别是声明式导航和编程式导航。其中,使用<router-link>标签定义导航链接的方式属于声明式导航。而编程式导航是先通过useRouter()函数获取全局路由实例,然后通过调用全局路由实例实现导航。

二、编程式导航语法

2.1 获取全局路由

Vue Router提供了useRouter()函数,使用它可以获取全局路由实例,该全局路由实例中提供了常用的push()方法replace()方法go()方法,获取全局路由实例的示例代码如下。

<script setup>

import { useRouter } from 'vue-router'

const router = useRouter()

</script>

2.2push()方法会向历史记录中添加一个新的记录,以编程方式导航到一个新的URL

router.push({ name: '/user', params: { userId } })  // 跳转到/user/123

 三、编程式导航的代码演示

本文代码是在Vue Router 命名路由-CSDN博客的基础上进行修改的。

3.1回顾在router.js中使用name属性定义路由匹配规则
import { createRouter, createWebHashHistory } from "vue-router"
import Movie from "./components/Movie.vue"

// // 创建路由实例对象
const router = createRouter({
    history: createWebHashHistory(),
    routes: [
        { path: '/movie/:id', name:'MovieName' , component: Movie, props: true },
    ]
})
// 导出路由实例对象
export default router
3.2回顾在Movie.vue中使用 $route.params.参数名 获取动态路径的参数
<template>
    <p>电影{{ $route.params.id }}页面</p>
</template> 
3.3在App.vue中使用编程式导航
<template>
  <div class="app-container">
    <h3>App根组件</h3>

    <!-- <router-link :to="{name:'MovieName', params:{id:1}}">电影1</router-link>
    <router-link :to="{name:'MovieName', params:{id:2}}">电影2</router-link>
    <router-link :to="{name:'MovieName', params:{id:3}}">电影3</router-link> -->

    <span @click="gotoMovie(1)">电影1</span>
    <span @click="gotoMovie(2)">电影2</span>
    <span @click="gotoMovie(3)">电影3</span>

    <hr>
    <router-view></router-view>
  </div>
</template>

<script setup>
import { useRouter } from 'vue-router'
const router = useRouter()
const gotoMovie = (Movie_id) => {
  router.push({
    name: 'MovieName',
    params: { id: Movie_id }
  })
}
</script>


<style scoped>
.app-container {
  text-align: center;
  font-size: 16px;
}

.app-container span {
  padding: 10px;
  color: #000;
}
</style>
3.4 浏览器可视化

在浏览器中访问http://localhost:5173/,页面显示App.vue程序入口文件;单击“电影2”链接,页面显示Movie组件,获取到的参数id值为2。

  

附本节项目代码下载地址:

链接:https://pan.baidu.com/s/1HZTQohQA0A1uL33n1oBzHA?pwd=8888 
提取码:8888

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值