Pinia+Router学习笔记(十)

简介: 本节记录Vue-Router的两种路由传参方式

第一种传参方式:query

<template>
    <h1>小满最骚</h1>
    <router-link replace to="/reg">点击replace</router-link>
    <router-link to="/login">返回Login</router-link>
    <br />
    <button @click="toPage(item)">Reg</button>
    <router-view></router-view>
</template>


<script setup lang="ts">
import { ref, reactive } from 'vue'
import { useRouter } from 'vue-router'
const router = useRouter()
const item: Item = {
    name: 'Reg',
    price: 666,
    id: '001',
}
type Item = {
    name: string
    price: number
    id: string
}
const toPage = (item: Item) => {
    router.push({
      // 这里可以使path也可以是name
        path:'/reg',
      // 利用query传递参数
        query: item,
    })
}
</script>


<style scoped></style>

特点:传递的参数会显示在地址栏上,不会随网页刷新发生变化

<template>
    <div>{{ route.query.name }}</div>
    <div>{{ route.query.price }}</div>
    <div>{{ route.query.id }}</div>
</template>

<script setup lang="ts">
import { ref, reactive } from 'vue'
import { useRoute } from 'vue-router'
const route = useRoute()
</script>

<style scoped></style>

第二种传参方式:params

由于笔者在尝试不做动态路由匹配,直接传递params参数时发现参数并不能正确传递(跳转过去就没了),因此此处直接进入动态路由匹配环节

params传参方式允许将参数保存在内存中,但由于刷新会导致参数消失,因此需要在路由配置中使用:占位符提前指定参数列表

import { createRouter, createWebHashHistory, RouteRecordRaw } from 'vue-router'

const routes: Array<RouteRecordRaw> = [
    {
        path: '/',
        name: 'Login',
        component: () => import('../components/login.vue'),
    },
    {
    // 使用/:参数名来定义参数列表
        path: '/reg/:id/:price',
        name: 'Reg',
        component: () => import('../components/reg.vue'),
    },
]

const router = createRouter({
    history: createWebHashHistory(),
    routes,
})

export default router
<template>
    <h1>小满最骚</h1>
    <router-link replace to="/reg">点击replace</router-link>
    <router-link to="/login">返回Login</router-link>
    <br />
    <button @click="toPage(item)">Reg</button>
    <router-view></router-view>
</template>

<script setup lang="ts">
import { ref, reactive } from 'vue'
import { useRouter } from 'vue-router'
const router = useRouter()
const item: Item = {
    name: 'Reg',
    price: 666,
    id: '001',
}
type Item = {
    name: string
    price: number
    id: string
}
const toPage = (item: Item) => {
    router.push({
    // 若要使用params传参方式则这里必须使用name,params对象的key要和router那边一一对应
        name: 'Reg',
        params: {
            id: item.id,
            price: item.price,
        },
    })
}
</script>

<style scoped></style>

注意两点:

  1. 对于编程式路由导航,params传参方式只能使用name属性跳转
  2. params参数中的key要和router中预定义的参数名对应

最后:如果使用+params传参的方式,则to中的url必须附带正确的参数数量

<!-- 本例中/reg是path路径,/0/0分别对应id和price -->
<router-link replace to="/reg/0/0">点击replace</router-link>
相关文章
|
存储 人工智能 大数据
云计算平台:AWS、Azure和Google Cloud的比较与选择
在当今数字化时代,云计算平台成为了企业和个人的首选。本文将重点比较三大主流云计算平台:AWS、Azure和Google Cloud,从性能、功能、可用性以及定价等方面进行综合评估,帮助读者更好地选择适合自己需求的云计算平台。
|
存储 Java 数据库
Android数据存储:什么是Room Persistence Library?
Android数据存储:什么是Room Persistence Library?
330 0
vue3使用vue-clipboard3复制到剪切板
vue3使用vue-clipboard3复制到剪切板
3484 0
|
Java Spring
SpringBoot接收参数的方式
本文介绍了Java Spring Boot中处理GET请求的多种方式。可以使用方法参数直接接收,或者通过`@RequestParam`注解指定必传参数。此外,可以用实体类接收多个相关参数,但不能同时使用`@RequestParam`。还可以通过`HttpServletRequest`对象获取参数,或利用`@PathVariable`接收路径变量。对于数组和集合参数,需注意使用`@RequestParam`注解。
1329 1
|
Ubuntu Shell Linux
pyenv 管理多个 Python 版本(1)
pyenv 管理多个 Python 版本(1)
481 86
pyenv 管理多个 Python 版本(1)
|
9月前
|
移动开发 前端开发 UED
React 音频进度条组件 Audio Progress Bar
在现代Web开发中,音频播放功能不可或缺。使用React构建音频进度条组件,不仅能实现播放控制和拖动跳转,还能确保代码的可维护性和复用性。本文介绍了如何利用HTML5 `&lt;audio&gt;`标签的基础功能、解决获取音频时长和当前时间的问题、动态更新进度条样式,并避免常见错误如忘记移除事件监听器和忽略跨浏览器兼容性。通过这些方法,开发者可以打造高质量的音频播放器,提升用户体验。
375 6
|
10月前
|
缓存 NoSQL Java
Redis的操作以及SpringCache框架
以及如何在Spring Boot应用中使用Spring Cache框架集成Redis。Redis提供了丰富的数据结构和高效的内存存储能力,结合Spring Cache框架,可以显著提高应用的性能和响应速度。
356 7
|
Go API 数据库
Go 语言中常用的 ORM 框架,如 GORM、XORM 和 BeeORM,分析了它们的特点、优势及不足,并从功能特性、性能表现、易用性和社区活跃度等方面进行了比较,旨在帮助开发者根据项目需求选择合适的 ORM 框架。
本文介绍了 Go 语言中常用的 ORM 框架,如 GORM、XORM 和 BeeORM,分析了它们的特点、优势及不足,并从功能特性、性能表现、易用性和社区活跃度等方面进行了比较,旨在帮助开发者根据项目需求选择合适的 ORM 框架。
1221 4
|
Kubernetes 持续交付 Docker
探索DevOps实践:利用Docker与Kubernetes实现微服务架构的自动化部署
【10月更文挑战第18天】探索DevOps实践:利用Docker与Kubernetes实现微服务架构的自动化部署
331 2
|
算法 Java
[Java·算法·中等] LeetCode21. 合并两个有序链表
[Java·算法·中等] LeetCode21. 合并两个有序链表
257 2