位置: IT常识 - 正文

Vue Router4 ,prams 传参失效和报错问题

编辑:rootadmin
Vue Router4 ,prams 传参失效和报错问题 Vue3 使用 Vue Router 时,prams 传参失效和报错问题

推荐整理分享Vue Router4 ,prams 传参失效和报错问题,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

我尝试使用 prams 传递数据

<script setup>import { useRouter } from 'vue-router'const router = useRouter()const params = { id: '1', name: 'ly', phone: 13246566476, age: 23 }const toDetail = () => router.push({ name: 'detail', params })</script><template> <el-button type="danger" @click="toDetail">查看情页</el-button></template>

在接收页面尝试渲染 prams 传递的数据:

<template> <div>姓名:{{ route.params?.name }}</div> <div>电话:{{ route.params?.phone }}</div> <div>年龄:{{ route.params?.age }}</div></template><script setup>import { useRoute } from 'vue-router'const route = useRoute()</script>

当我跳转页面时,得到的 prams 数据为空 ,控制台也出现了 Vue Router 的警告

点开链接后发现了原因, 点击查看更新日志

也就是说,从Vue Router的2022-8-22 这次更新后,我们使用上面的方式在新页面无法获取:

vue也给我们提出了代替方案:

使用 query 的方式传参

只要改成query 传参就好了,注意query传参只能用路由表中的 path ,不是 name ,并且所有参数都会显示在URL 地址上。

<script setup>import { useRouter } from 'vue-router'const router = useRouter()const query = { id: '1', name: 'ly', phone: 13246566476, age: 23 }const toDetail = () => router.push({ path: '/detail', query })</script><template> <el-button type="danger" @click="toDetail">查看情页</el-button></template>Vue Router4 ,prams 传参失效和报错问题

将参数放在 pinia 或 vuex仓库里

使用动态路由匹配

传递 state,在新页面使用 History API 接收参数

使用 meta 原信息方式传递 (此方式更适用于路由守卫)

使用动态路由匹配

如果传递参数较少的情况下,可以尝试使用下面这种方式,只要修改一下path定义部分就可以了:

// params 传递的参数: { id: '1', name: 'ly', phone: 13246566476, age: 23 }{ path: '/detail/:id/:name/:phone/:age', name: 'detail', component: () => import('@/views/detail/index.vue')}

查看页面效果,控制台警告也消失了:

注意,如果使用使用了这种动态路由匹配方式, path: '/detail/:id/:name/:phone/:age' ,中这三个参数你都必须传递,否则会报错:

个人觉得这么写很鸡肋: 如果不把params参数写在路由路径中无法得到 params 参数,这种方式的params参数又会显示在地址栏。虽然不算弃用params, 但是每次把params参数写在路由路径中是很麻烦的一件事。

使用HistoryAPI方式传递和接收

在跳转前的页面使用 state 参数:

<script setup>import { useRouter } from 'vue-router'const router = useRouter()const params = { id: '1', name: 'ly', phone: 13246566476, age: 23 }const toDetail = () => router.push({ name: 'detail', state: { params } })</script><template> <el-button type="danger" @click="toDetail">查看情页</el-button></template>

跳转的后页面接收:

<template> <div>{{ historyParams }}</div></template><script setup lang="ts">const historyParams = history.state.paramsconsole.log('history.state', history.state)</script>

本文链接地址:https://www.jiuchutong.com/zhishi/298565.html 转载请保留说明!

上一篇:性能优化之-事件代理(性能优化有什么用)

下一篇:OpenAI发布GPT-4;目前最完整的ChatGPT资源库;中文版提示词工程指南;AI颠覆播客体验;ChatGPT引发的10大职业危机 | ShowMeAI日报(openai发布时间)

  • 怎么查手机删过的照片(怎么查手机删除)

    怎么查手机删过的照片(怎么查手机删除)

  • applewatch应用刷新要不要关(iwatch刷表盘)

    applewatch应用刷新要不要关(iwatch刷表盘)

  • 快手播放量很高但没人点赞(快手播放量很高但是浏览记录没有)

    快手播放量很高但没人点赞(快手播放量很高但是浏览记录没有)

  • iphone11下面的横条不见了(iphone11下面的横条怎么去掉)

    iphone11下面的横条不见了(iphone11下面的横条怎么去掉)

  • 带耳机有电流声怎么办手机(带耳机有电流声音怎么回事)

    带耳机有电流声怎么办手机(带耳机有电流声音怎么回事)

  • 苹果电脑散热器一直响(苹果电脑散热器一直响还很热)

    苹果电脑散热器一直响(苹果电脑散热器一直响还很热)

  • e04授权丢失怎么办(e04授权丢失啥意思)

    e04授权丢失怎么办(e04授权丢失啥意思)

  • 华为nova2plus是什么时候上市的(华为nova2plus是什么意思)

    华为nova2plus是什么时候上市的(华为nova2plus是什么意思)

  • 淘宝卖家心级怎么计算(淘宝卖家心级怎么快速提升)

    淘宝卖家心级怎么计算(淘宝卖家心级怎么快速提升)

  • 备份到云端是什么意思(备份数据到云端)

    备份到云端是什么意思(备份数据到云端)

  • 为什么ipad下载不了微信(为什么ipad下载软件获取不了)

    为什么ipad下载不了微信(为什么ipad下载软件获取不了)

  • 安卓投屏到ipad播放(安卓投屏到ipad全屏)

    安卓投屏到ipad播放(安卓投屏到ipad全屏)

  • AirPods Pro怎么查询序列号(airpodspro怎么查看电池健康)

    AirPods Pro怎么查询序列号(airpodspro怎么查看电池健康)

  • 证件照片大于500k怎么办(证件照片大于500k怎么弄)

    证件照片大于500k怎么办(证件照片大于500k怎么弄)

  • 苹果sos怎么取消(苹果手机sos怎么取消)

    苹果sos怎么取消(苹果手机sos怎么取消)

  • 苹果耳机怎么调按下一首(苹果耳机怎么调节降噪模式)

    苹果耳机怎么调按下一首(苹果耳机怎么调节降噪模式)

  • 如何把抖音视频设为铃声(如何把抖音视频保存到手机相册)

    如何把抖音视频设为铃声(如何把抖音视频保存到手机相册)

  • 华为优享版是什么意思(华为商城优享购是什么)

    华为优享版是什么意思(华为商城优享购是什么)

  • 快手里的小黄车怎么找(快手里的小黄车是什么意思)

    快手里的小黄车怎么找(快手里的小黄车是什么意思)

  • relme手机是什么(remlme是什么手机)

    relme手机是什么(remlme是什么手机)

  • 苹果手机时间显示到桌面(苹果手机时间显示变淡了怎么调回来)

    苹果手机时间显示到桌面(苹果手机时间显示变淡了怎么调回来)

  • 如何隐藏手机号码打电话(打举报电话如何隐藏手机号)

    如何隐藏手机号码打电话(打举报电话如何隐藏手机号)

  • 谈谈ES5和ES6的区别(es5和es6的区别)

    谈谈ES5和ES6的区别(es5和es6的区别)

  • 【Visual C++】游戏开发四十九 浅墨DirectX教程十七 三维天空的实现(《visual c++游戏编程基础》)

    【Visual C++】游戏开发四十九 浅墨DirectX教程十七 三维天空的实现(《visual c++游戏编程基础》)

  • 前端DAY01-HTML(前端培训费用大概多少)

    前端DAY01-HTML(前端培训费用大概多少)

  • 不通过税金及附加的科目
  • 山东税务网上申报平台操作员查询
  • 服装加工费税收编码
  • 金税盘交钱
  • 现在开票还能用三方协议吗
  • 固定资产怎么进行折旧处理
  • 企业对伤残怎么赔偿?
  • 银行存款产生的利息怎么写分录
  • 用友T3怎么结转上年数据
  • 金税盘递减税款2022
  • 所得税分支机构分配表怎么填
  • 一个公司控股另一个公司
  • 法院案件受理费计算器
  • 出口退税征税
  • 给政府开发票如何处理?
  • 跨年发票能否次年入账
  • 公司支付广告服务费账务处理
  • 代销协议书
  • 不锈钢材料开票
  • 小规模自开专票税率是1%还是3%
  • 印花税无法申报怎么回事
  • 软件企业即征即退账务处理
  • 未缴少缴税款追征期
  • 增加资产的会计科目
  • 开票的增值税与附加税
  • 每个月的股利怎么计提?
  • 客户汇公司账户怎么汇
  • 所得税退税会计分录为啥要借贷所得税费用
  • 举办活动购买的东西会计分录
  • linux网络管理实训总结
  • php双冒号和箭头
  • windows更新暂停怎么恢复
  • 佛洛勒斯岛在哪里
  • 累积未分配利润为负可以分红吗
  • php getdate()方法
  • 社会保险费征收机构责令限期缴纳
  • php图片添加水印
  • nginx搭建静态资源服务器
  • 暂估入库成本结转处理低于实际成本怎么办
  • 开票软件怎么增加开票员
  • 什么叫资本退出
  • 旅游景点的门票能做费用吗
  • SQL2005中char nchar varchar nvarchar数据类型的区别和使用环境讲解
  • 报销金额大于发票怎么办
  • 企业所得税计提的准备金可以扣除吗
  • 调研费用包括哪些项目
  • 应付账款已付款应该怎样记账
  • 母子公司往来款属于借款吗
  • 固定资产清理增值税计税依据
  • 被法院扣的钱怎么又退回来了
  • 退休职工取暖费发放标准2023年
  • 企业设备维修
  • 开办职工食堂
  • 转出未交增值税借方余额怎么处理
  • 转账支票填写样本图片
  • 营业外收入主要来源
  • 如何结转生产成本至库存商品
  • windows电源图标消失
  • XP系统如何设置U盘启动
  • xp系统玩游戏卡吗
  • centos6开机启动服务
  • 修改注册表显示隐藏文件
  • win10以管理员身份登录电脑
  • 提示explorer.exe
  • winxp如何增加c盘空间
  • fs是什么文件夹
  • fsmb32.exe是什么进程 作用是什么 fsmb32进程查询
  • Extjs TimeField 显示正常时间格式的代码
  • Cocos2dx3.2 Crazy Tetris 由于遮罩引起的部分手机白屏
  • jQuery使用ajax方法解析返回的json数据功能示例
  • 谈谈网页设计中的内容
  • Unity3D AsssetBundle加载效率比较
  • 简单的横向棱纹魔杖
  • Javascript中Array.prototype.map()详解
  • js如何使用
  • 个人纳税记录为多少
  • 公司地址变更后社保要改吗
  • 青岛胶州国际机场在哪个区
  • 企业购买小轿车一辆会计分录
  • 计算出口退税的免抵税额,不计征城市维护建设税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设