当前位置: 首页 > news >正文

VUE3 路由传参

1.声明式导航与传参

传统情况下的跳转页面是<a>标签;因为vue3主要是单页面应用;所以是页面内跳转;我们点击导航栏,就会出现单页面的跳转;跳转的出口是<router-view>;那控制跳转的方式(也就是知道要跳转到哪个页面)就是<router-link>;其本质还是 a 标签

1.1注意

router-link 会⾃动给当前导航添加两个类名,有什么区别呢?
答:1、 router-link-active : 模糊匹配
        2、 router-link-exact-active : 精确匹配

1.2传参方式

1. 查询参数传参
2. 动态路由传参

1. 查询参数传参

格式

//字符串
< router-link to = "/path? 参数名 = 值&参数名=值&…… " > xxx </ router-link >
//对象
< router-link :to = "{
path: '/path',
query: {
参数名 :
...
}
}" > xxx </ router-link >
接收示例
<script setup>
import { useRoute } from 'vue-router'
// 得到当前激活的路由对象
const route = useRoute ()
// 获取查询参数
console . log (route.query)
</script>

举例

<!-- 字符串 -->
< router-link to = "/friend?id=10086" > 朋友 </ router-link >
<!-- 对象 -->
< router-link :to = "{
        path: '/friend',
        query: {
        id: 10086
        }
}" > 朋友 </ router-link >
接收
< script setup >
import { useRoute } from 'vue-router'
const route = useRoute ()
console . log (route.query.id)
</ script >

2.动态路由传参(声明式导航传动态参)

在路由表中

import User from './User.vue'

// 这些都会传递给 `createRouter`
const routes = [
  // 动态字段以冒号开始
  { path: '/users/:id', component: User },
]

也可以带多个动态参

path: '/users/:id/:name/:token/:......'

为什么说是动态参呢?答:<router-link :to="`/user/${变量名}`">我是可以传递一个动态的ref属性的变量名,来达到操控目地的;

格式:

< router-link to = "/path/ 具体值 " > xxx </ router-link >
< router-link :to = "{
        name: 'Friend',
        params: {
        参数名: 具体值
        }
}" > xxx </ router-link >
//接收方
<script setup>
import { useRoute } from 'vue-router'
const route = useRoute ()
// 获取动态路由参数
console . log (route.params)
</script>

代码示例

createRouter ({
routes : [ {
        name : 'Friend' ,
        path : '/friend/:fid' ,
        component : Friend
} ]
})
<!-- 字符串 -->
< router-link to = "/friend/10010" > 朋友 </ router-link >
<!-- 对象 -->
< router-link :to = "{
name: 'Friend',
params: {
fid: 10010
}
}" > 朋友 </ router-link >
< script setup >
import { useRoute } from 'vue-router'
const route = useRoute ()
console . log (route.params.fid)
</ script >

 2.重定向

const routes = [{ path: '/home', redirect: '/' }]        //跟路径名

 const routes = [{ path: '/home', redirect: { name: 'homepage' } }]        //跟命名路由

 跟一个方法,动态返回重定向目标:

 const routes = [
  {
    // /search/screens -> /search?q=screens
    path: '/search/:searchText',
    redirect: to => {
      // 方法接收目标路由作为参数
      // return 重定向的字符串路径/路径对象
      return { path: '/search', query: { q: to.params.searchText } }
    },
  },
  {
    path: '/search',
    // ...
  },
]

3.404设置

path: "*" (任意路径) ‒ 前⾯不匹配就命中最后这个
import _404 from '@/views/404.vue'
  const router = new VueRouter ({
routes : [
  ...
  { path : '*' , component : _404 } // 404 配置 , 推荐放在路由表的最后⼀个
  ]
  })

4.编程式导航与传参

5.嵌套与守卫


http://www.mrgr.cn/news/95918.html

相关文章:

  • aab 转 apk
  • ⭐算法OJ⭐连接所有点的最小费用【最小生成树】(C++实现)Min Cost to Connect All Points
  • P4147 玉蟾宫
  • MySQL数据库中常用的命令
  • 【NLP 43、大模型技术发展】
  • 【Python LeetCode Patterns】刷力扣,15 个学习模式总结
  • 常用序列的离散时间傅里叶变换(DTFT)
  • Win32 / C++ ini配置文件解析类(支持简易加解密)
  • 【算法】动态规划:回文子串问题、两个数组的dp
  • 3.24[Q]Linux
  • PCL 点云多平面探测
  • 新一代可编程网关应用举例
  • Python Sanic面试题及参考答案
  • P1182 数列分段 Section II
  • 一次由特殊字符引发的Minio签名问题排查
  • 保姆级教程搭建企业级智能体+私有知识库,Dify+ollama,Linux版
  • 基于Python的自然语言处理系列(60):使用 LangChain 构建 Multi-Vector Retriever 进行文档检索
  • ESP-SPARKBOT AI 智能机器人:v1.2 全流程复刻指南
  • 论坛系统测试报告
  • 给Web开发者的HarmonyOS指南02-布局样式