Blog
首页
文档
收藏
关于
  • 在线转换时间戳 (opens new window)
  • 在线压缩图片 (opens new window)
  • Float-Double转二进制 (opens new window)
  • 文件转Hex字符串 (opens new window)

HiuZing

🍑
首页
文档
收藏
关于
  • 在线转换时间戳 (opens new window)
  • 在线压缩图片 (opens new window)
  • Float-Double转二进制 (opens new window)
  • 文件转Hex字符串 (opens new window)
  • 前端面试题

  • JavaScript

  • Vue2

  • port

  • CSS

  • Node.js

  • JavaScript优化

  • uniapp

  • Mini Program

  • TypeScript

  • 面向对象编程

  • UI组件

  • Plugin

  • Vue3

    • 教程

    • Vue Router

      • API

      • 基础

        • 入门
        • 路由模式
        • 命名路由
        • 历史记录
        • 路由传参
          • Query路由传参
            • 编程式导航
          • Params路由传参
            • 编程式导航
            • 动态路由传参
            • 二者的区别
        • 嵌套路由
        • 命名视图
        • 重定向和别名
      • 进阶

      • 实例

    • API

    • Vuex

    • 实例处理方案

    • 文档

    • 用法

  • 性能优化

  • Axios

  • 状态管理

  • React

  • Mock

  • Icon

  • Template

  • 构建工具

  • 项目规范配置

  • Taro

  • SVG

  • React Native

  • 前端
  • Vue3
  • Vue Router
  • 基础
HiuZing
2023-03-28
目录

路由传参

​ 将 props 传递给路由组件 | Vue Router (vuejs.org) (opens new window)

# Query路由传参

# 编程式导航

使用router的push或者replace的时候,改为对象形式新增query 必须传入一个对象

<script>
const toDetail = (item: Item) => {
    router.push({
        path: '/reg',
        query: item
    })
}
</script>
1
2
3
4
5
6
7
8
<template>
    品牌:{{ route.query?.name }}
    价格:{{ route.query?.price }}
    ID:{{ route.query?.id }}
</template>

<script>
	// 接受参数
	//使用 useRoute 的 query
	import { useRoute } from 'vue-router';
	const route = useRoute()
</script>
1
2
3
4
5
6
7
8
9
10
11
12

# Params路由传参

# 编程式导航

使用router的push或者replace的时候,改为对象形式并且只能使用name,path无效,然后传入params

<script>
const toDetail = (item: Item) => {
    router.push({
        name: 'Reg',
        params: item
    })
}
</script>
1
2
3
4
5
6
7
8
<script>
    // 接受参数
    // 使用 useRoute 的 params
    import { useRoute } from 'vue-router';
    const route = useRoute()
</script>
<template>
    <div>品牌:{{ route.params?.name }}</div>
    <div>价格:{{ route.params?.price }}</div>
    <div>ID:{{ route.params?.id }}</div>
</template>
1
2
3
4
5
6
7
8
9
10
11

# 动态路由传参

很多时候,我们需要将给定匹配模式的路由映射到同一个组件。例如,我们可能有一个 User 组件,它应该对所有用户进行渲染,但用户 ID 不同。在 Vue Router 中,我们可以在路径中使用一个动态字段来实现,我们称之为 路径参数

路径参数用冒号 : 表示。当一个路由被匹配时,它的 params 的值将在每个组件

const routes:Array<RouteRecordRaw> = [
    {
        path:"/",
        name:"Login",
        component:()=> import('../components/login.vue')
    },
    {
        //动态路由参数
        path:"/reg/:id",
        name:"Reg",
        component:()=> import('../components/reg.vue')
    }
]
const toDetail = (item: Item) => {
    router.push({
        name: 'Reg',
        params: {
            id: item.id
        }
    })
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<script>
    import { useRoute } from 'vue-router';
    import { data } from './list.json'
    const route = useRoute()

    const item = data.find(v => v.id === Number(route.params.id))
</script>
1
2
3
4
5
6
7

# 二者的区别

  • query 传参配置的是 path,而 params传参配置的是name,在 params中配置path无效
  • query在路由配置不需要设置参数,而 params必须设置
  • query 传递的参数会显示在地址栏中
  • params传参刷新会无效,但是 query 会保存传递过来的值,刷新不变 ;
  • 路由配置
上次更新: 2024/08/14, 04:14:33
历史记录
嵌套路由

← 历史记录 嵌套路由→

最近更新
01
React Native 使用SVG
08-13
02
Docker基础命令
08-04
03
算数逻辑单元
07-30
更多文章>
Theme by Vdoing | Copyright © 2021-2024 WeiXiaojing | 友情链接
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式