Vue-Router 第五节:命名路由 & 编程式导航

Vue-Router 第五节:命名路由 & 编程式导航

一、命名路由

除了 path 之外,你还可以为任何路由提供 name。这有以下优点:

  • 没有硬编码的 URL
  • params 的自动编码/解码。
  • 防止你在 url 中出现打字错误。
  • 绕过路径排序
go 复制代码
   // router/index.ts
   {
        path: '/user/:id',
        name: 'user',                // 给路由命名
        component: import("@/views/user/index.vue")
    }
xml 复制代码
<!--  App.vue -->  
<router-link :to="{ name: 'user', params: { id: '12' } }">通过命名式进入user路由页面</router-link>

二、编程式导航

1、除了使用 声明式<router-link> 创建 a 标签来定义导航链接,我们还可以通过编写代码借助router的实例方法来实现:router.push(...)

xml 复制代码
<template>
  <div> 
     <button @click="toPages">通过编程式式进入user路由页面</button>
  </div>
</template>
​
​
<script setup lang="ts">
  import { useRouter } from 'vue-router';
  const router = useRouter()
  const toPages = () => {
  router.push( '/user/12' )  
  // router.push({name:'user',params:{id:'12'}})
  // router.push({path:'/user',query:{id:'12'}})
}
</script>

2、push的参数可以是一个字符串路径也可以是一个对象。

php 复制代码
//  一个字符路径
router.push( '/user/12' )
​
//  带有路径的对象
router.push({path:'/user/12'})
​
//  命名的路由,并加上参数,让路由建立url
router.push({name:'user',params:{id:'12'}})
​
// 带查询参数, 结果是 /user?id=12
router.push({path:'/user',query:{id:'12'}})
​
// 带hash,结果是/user#12
router.push({path:'/user',hash:'12'})

3、路由传参方式: query、params

区别:

query 传参配置的是 path,而 params 传参配置的是name,在 params中配置 path 无效

query 在路由配置不需要设置参数或者写为可选?,而 params 必须设置

query 传递的参数会显示在地址栏中, 只能接受对象 。

params传参刷新会无效,但是 query 会保存传递过来的值,刷新不变 ;

相关推荐
知识分享小能手1 分钟前
微信小程序入门学习教程,从入门到精通,项目实战:美妆商城小程序 —— 知识点详解与案例代码 (18)
前端·学习·react.js·微信小程序·小程序·vue·前端技术
DoraBigHead14 分钟前
React 中的代数效应:从概念到 Fiber 架构的落地
前端·javascript·react.js
LuckySusu14 分钟前
【vue篇】Vue 性能优化全景图:从编码到部署的优化策略
前端·vue.js
卓伊凡19 分钟前
【03】建立隐私关于等相关页面和内容-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓
前端
笨笨鸟慢慢飞21 分钟前
Vue3后退不刷新,前进刷新
前端
LuckySusu24 分钟前
【vue篇】SSR 深度解析:服务端渲染的“利”与“弊”
前端·vue.js
LuckySusu24 分钟前
【vue篇】SPA 单页面应用:现代 Web 的革命与挑战
前端·vue.js
LuckySusu25 分钟前
【vue篇】Vue 初始化页面闪动(FOUC)问题终极解决方案
前端·vue.js
fruge27 分钟前
从 0 到 1 理解前端工程化:图表化解析核心逻辑
前端
LuckySusu27 分钟前
【vue篇】技术分析:Template 与 JSX 的本质区别与选型指南
前端·vue.js