【Vue-Router】路由传参

news2024/11/26 4:51:51

1. query 传参

在这里插入图片描述
list.json

{
  "data": [
    {
      "name": "面",
      "price":300,
      "id": 1
    },
    {
      "name": "水",
      "price":400,
      "id": 2
    },
    {
      "name": "菜",
      "price":500,
      "id": 3
    }
  ]

}

login.vue

<template>
  <h1>
    我是列表页面
  </h1>
  <table cellpadding="0" class="table" border="1">
    <thead>
      <tr>
        <th>商品</th>
        <th>价格</th>
        <th>操作</th>
      </tr>
    </thead>
    <tbody>
      <tr :key="item.id" v-for="item in data">
        <th>{{ item.name }}</th>
        <th>{{ item.price }}</th>
        <th>
          <button @click="toDetail(item)">详情</button>
        </th>
      </tr>
    </tbody>
  </table>
</template>

<script setup lang="ts">
import { data } from './list.json'
import { useRouter } from 'vue-router';

const router = useRouter()

type Item = {
  name: string;
  price: number;
  id: number;
}

const toDetail = (item: Item) => {
  router.push({
    path: '/reg',
    query: {
      id: item.id,
      name: item.name,
      price: item.price
    }
  })
}
</script>

<style scoped>
.table {
  width: 400px;
}
</style>

reg.vue

<template>
  <h1>
    我是列表页面
  </h1>
  <button @click="router.back">返回</button>
  <div style="font-size: 20px;">
    品牌:{{ route.query.name }}
  </div>
    <div style="font-size: 20px;">
    价格:{{ route.query.price }}
  </div>
    <div style="font-size: 20px;">
    id: {{ route.query.id }}
  </div>
</template>

<script setup lang="ts">
import { useRoute } from 'vue-router';
import { useRouter } from 'vue-router';

const router = useRouter();
const route = useRoute();

</script>

<style scoped>
.reg {
  background-color: green;
  height: 400px;
  width: 400px;
  font-size: 20px;
  color: white;
}
</style>

App.vue

<template>
  <h1>hello world</h1>
 
  <hr>
  <router-view></router-view>
</template>

<script setup lang="ts">
import { useRouter } from 'vue-router';
const router = useRouter();

</script>

<style scoped></style>

在这里插入图片描述
在这里插入图片描述

2. 动态路由参数

index.ts

import { createRouter, createWebHistory, RouteRecordRaw, createWebHashHistory } from "vue-router";

const routes: Array<RouteRecordRaw> = [
  {
    path: "/",
    name: 'Login',
    component: () => import("../components/login.vue")
  },
  {
    path: "/reg/:id",
    name: 'Reg',
    component: () => import("../components/reg.vue")
  }
]

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

export default router

reg.vue

<template>
  <h1>
    我是列表页面
  </h1>
  <button @click="router.back()">返回</button>
  <div style="font-size: 20px;">
    品牌:{{ item?.name }}
  </div>
  <div style="font-size: 20px;">
    价格:{{ item?.price }}
  </div>
  <div style="font-size: 20px;">
    id: {{ item?.id }}
  </div>
</template>

<script setup lang="ts">
import { useRoute } from 'vue-router';
import { useRouter } from 'vue-router';
import { data } from './list.json';

const router = useRouter();
const route = useRoute();
// 返回对象用item接收
const item = data.find(v => v.id === Number(route.params.id))


</script>

<style scoped>
.reg {
  background-color: green;
  height: 400px;
  width: 400px;
  font-size: 20px;
  color: white;
}
</style>

item?.name ,item?.price ,item?.id,他们如果不使用可选链操作符会出现报错:'__VLS_ctx.item' is possibly 'undefined'.

login.vue

<template>
  <h1>
    我是列表页面
  </h1>
  <table cellpadding="0" class="table" border="1">
    <thead>
      <tr>
        <th>商品</th>
        <th>价格</th>
        <th>操作</th>
      </tr>
    </thead>
    <tbody>
      <tr :key="item.id" v-for="item in data">
        <th>{{ item.name }}</th>
        <th>{{ item.price }}</th>
        <th>
          <button @click="toDetail(item)">详情</button>
        </th>
      </tr>
    </tbody>
  </table>
</template>

<script setup lang="ts">
import { data } from './list.json'
import { useRouter } from 'vue-router';

const router = useRouter()

type Item = {
  name: string;
  price: number;
  id: number;
}

const toDetail = (item: Item) => {
  router.push({
    // name 对应 router 的 name
    name: 'Reg',
    // 不会展示在URL上,存在于内存里
    params: {
      id: item.id
    }
  })
}
</script>

<style scoped>
.table {
  width: 400px;
}
</style>

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/875988.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

eachars 自适应

目录 1. 案例&#xff1a; 2. 原因&#xff1a; 3. 解决&#xff1a; 1. 案例&#xff1a; 默认是正常宽度&#xff08;如图1&#xff09;&#xff0c;当再次跳转会该页面时&#xff0c;eachars图发生变化&#xff08;如图2&#xff09;。 图1 图2 2. 原因&#xff1a; 没有…

三维模型OSGB格式轻量化在三维展示效果上的重要性探讨

三维模型OSGB格式轻量化在三维展示效果上的重要性探讨 三维模型在展示中的效果是十分关键的&#xff0c;因为它直接影响用户对模型的理解和体验。而OSGB格式轻量化是实现优质三维展示效果的关键技术之一。下面将详细介绍轻量化OSGB格式的三维模型在三维展示效果上的重要性。 首…

“多测合一”生产软件-不动产测量(不动产权籍调查测绘软件RESS),房地一体化测量由请湖南来示范

湖南“多测合一”生产软件-不动产测量软件&#xff0c;提取码&#xff1a;RESShttps://pan.baidu.com/s/1OqakLJICIP6buNiZ6j9Npw?pwdRESS 2020年7 月&#xff0c;国务院办公厅印发《 国务院办公厅关于进一步优化营商环境 更好服务市场主体的实施意见》 &#xff08;国办发〔 …

Android之SQLite数据库的使用总结

一、SQLite数据库基本使用 1、特点 &#xff08;1&#xff09;嵌入式数据库&#xff0c;体积小 &#xff08;2&#xff09;数据库是由底层的sqlite.c执行程序的代码动态生成的&#xff0c;不用人为去创建数据库 &#xff08;3&#xff09;涉及抽象类SQLiteOpenHelper 2、继承…

【Java从0到1学习】08 String类

1. 概述 字符串是由多个字符组成的一串数据(字符序列)&#xff0c;字符串可以看成是字符数组。 在实际开发中&#xff0c;字符串的操作是最常见的操作&#xff0c;没有之一。而Java没有内置的字符串类型&#xff0c;所以&#xff0c;就在Java类库中提供了一个类String 供我们…

如何使用CSS实现一个响应式网格布局?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 使用CSS实现响应式网格布局⭐ 设置基本的HTML结构⭐ 创建基本的CSS样式⭐ 添加媒体查询以实现响应式效果⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端…

成集云 | 用友U8采购请购单同步钉钉 | 解决方案

源系统成集云目标系统 方案介绍 用友U8是中国用友集团开发和推出的一款企业级管理软件产品。具有丰富的功能模块&#xff0c;包括财务管理、采购管理、销售管理、库存管理、生产管理、人力资源管理、客户关系管理等&#xff0c;可根据企业的需求选择相应的模块进行集…

Oracle 增加重做日志组、组成员

重做日志文件记录数据所有的修改信息并提供一种数据库失败时的恢复机制 一个Oracle数据库要求至少有两组重做日志文件 组中每个日志文件被称作一个组成员 需求&#xff1a;目前有三组重做日志组&#xff0c;增加一个重做日志组、并且增加两个重做日志组成员 1、查看重做日志组…

Python实现SSA智能麻雀搜索算法优化循环神经网络回归模型(LSTM回归算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 麻雀搜索算法(Sparrow Search Algorithm, SSA)是一种新型的群智能优化算法&#xff0c;在2020年提出&a…

日志采集分析ELK

这里的 ELK其实对应三种不同组件 1.ElasticSearch&#xff1a;基于Java&#xff0c;一个开源的分布式搜索引擎。 2.LogStash&#xff1a;基于Java&#xff0c;开源的用于收集&#xff0c;分析和存储日志的工具。&#xff08;它和Beats有重叠的功能&#xff0c;Beats出现之后&a…

什么是集成测试?集成测试方法有哪些?

1、基本概念&#xff1a; 将软件集成起来后进行测试。集成测试又叫子系统测试、组装测试、部件测试等。集成测试主要是针对软件高层设计进行测试&#xff0c;一般来说是以模块和子系统为单位进行测试。 2、集成测试包含的层次&#xff1a; 1&#xff09;模块内的集成&#x…

浅谈防火门监控系统的设计和安装

安科瑞 华楠 摘要&#xff1a;随着现代建筑中火灾成为重要的安全隐患&#xff0c;消防得到了越来越多民众的关注。更好地完成建筑消防设计成为了建筑电气设计中的重要一环。防火门监控系统是《火灾自动报警系统设计规范》(GB50116-2013)中规定在建筑中设置的火灾自动报警系统子…

h3c radius认证测试

客户端ssh连接上交换机进行管理&#xff0c;用radius里面的用户名和密码进行登陆 dis current-configuration vlan 1 vlan 2 interface Vlan-interface1 ip address 192.168.0.105 255.255.255.0 interface Vlan-interface2 ip address 192.168.60.244 255.255.255.0 interfac…

怎么样提升科研水平?

第15期《求是》杂志发表中强调加强基础研究&#xff0c;是实现高水平科技自立自强的迫切要求&#xff0c;是建设世界科技强国的必由之路。强化党建引领&#xff0c;为提升科研水平定向护航。 前一阵&#xff0c;广西审计厅发布的报告揭示了科研经费1.3亿&#xff0c;成果转化为…

CVPR 2023 | 用户可控的条件图像到视频生成方法(基于Diffusion)

注1:本文系“计算机视觉/三维重建论文速递”系列之一&#xff0c;致力于简洁清晰完整地介绍、解读计算机视觉&#xff0c;特别是三维重建领域最新的顶会/顶刊论文(包括但不限于 Nature/Science及其子刊; CVPR, ICCV, ECCV, NeurIPS, ICLR, ICML, TPAMI, IJCV 等)。 本次介绍的论…

学科在线教育元宇宙VR虚拟仿真平台落实更高质量的交互学习

为推动教育数字化&#xff0c;建设全民终身学习的学习型社会、学习型大国&#xff0c;元宇宙企业深圳华锐视点深度融合VR虚拟现实、数字孪生、云计算和三维建模等技术&#xff0c;搭建教育元宇宙平台&#xff0c;为学生提供更加沉浸式的学习体验&#xff0c;提高学习效果和兴趣…

JAVA宝典----输入输出流(理解记忆)

目录 一、 Java IO流的实现机制是什么&#xff1f; 二、Java中有几种类型的流&#xff1f; 三、管理文件和目录的类是什么&#xff1f; 四、Java Socket是什么&#xff1f; 五、什么是 JAVA NIO&#xff1f; 六、 什么是Java序列化&#xff1f; &#xff08;1&#xff09;序…

VVIC-据关键词取商品列表

一、接口参数说明&#xff1a; item_search-根据关键词取商品列表&#xff0c;点击更多API调试&#xff0c;请移步注册API账号点击获取测试key和secret 公共参数 请求地址: https://api-gw.onebound.cn/vvic/item_search 名称类型必须描述keyString是调用key&#xff08;点击…

骨传导运动耳机推荐?这几款耳机不仅配置高性价比也高!

目前&#xff0c;骨传导运动耳机是运动圈颇受欢迎的耳机之一&#xff0c;骨传导耳机就是基于骨传导原理设计制造的。骨传导耳机把声音转化为不同频率的振动&#xff0c;通过振动颅骨使人感知到声音。由于能够“敞开”双耳&#xff0c;骨传导耳机解决了传统耳机长时间佩戴不适以…

【大数据之Kafka】二、Kafka入门

1 安装部署 1.1 集群规划 1.2 集群部署 官方下载地址&#xff1a;http://kafka.apache.org/downloads.html &#xff08;1&#xff09;解压安装包&#xff1a; tar -zxvf kafka_2.12-3.0.0.tgz -C /opt/module/&#xff08;2&#xff09;修改解压后的文件名称&#xff1a; …