位置: 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发布时间)

  • 固定资产什么时候开始折旧
  • 驾驶员培训服务税率
  • 累计扣税法什么时候实行的
  • 养蜂合作社怎么申请补贴
  • 关联方交易容易产生哪些弊端
  • 耕地占用税的纳税人是谁
  • 新车交车辆购置税需要什么材料
  • 固定资产怎么确认是不是投入使用了
  • 结转本月工资薪金
  • 地税有哪些税种类型
  • 劳务派遣公司发放工资是按照劳务报酬嘛
  • 100万的收入要交多少
  • 实收资本的印花税是营业账簿吗
  • 餐费适用税率
  • 高新技术企业资助
  • 公司员工出差补贴与差旅费报销制度
  • 工会经费具体用途是什么
  • 开票资料中没有电话可以吗
  • 金蝶kis云专业版原材料数量怎么录入
  • 小型微利企业年度汇算清缴报哪些报表
  • 房产税发票可以抵扣吗
  • 应征增值税不含税销售额和免税销售额
  • 非居民企业可以享受小微企业所得税优惠政策吗
  • 本企业领用外购原材料进项税要转出吗
  • 实行简易征收
  • 公对公转账不开票可以吗
  • 折价购入对投资者而言,是为以后多得利息
  • 什么电脑系统比较好
  • 其他应收款期末贷方余额表示什么
  • 国有企业融资方案比较
  • php生成表格
  • 转入固定资产清理会计科目
  • php 正则
  • 语言翻译算法
  • 固定资产转卖会亏本吗
  • 命令提示符用不了怎么办
  • node 文件
  • php远程访问
  • 插件不支持是什么意思
  • 结转成本费用
  • python多线程编程案例
  • 冲以前年度管理费用
  • 清包工方式建筑服务
  • 税款要在15号前扣吗
  • sqlserver调度
  • 公用经费属于哪一类经费
  • 房屋租赁房产税如何征收
  • 对公账户有法律效力吗
  • 应该免税的增值税是什么
  • 银行存款日记账填写样本图
  • 发票抵扣联要放入凭证里吗
  • 调整以前年度的费用怎么做
  • 其他综合收益影响利润总额吗为什么
  • 现金日记账的登记证据有
  • 股权变更需要多久
  • mysql错误代码1418
  • win10系统怎么做全盘镜像
  • win7电脑默认打开方式怎么设置
  • win10 0×0000007b怎么解决
  • linux服务端
  • 如何在macbook中设置软件权限
  • centos 管理员
  • 主板不支持u盘装系统怎么办
  • win7更改电脑设置在哪里
  • win8系统计算器快捷键
  • ubuntu20.10
  • linux中rsync有什么用
  • Windows正在启动卡死
  • win10系统怎么设置最好
  • 系统右键菜单
  • opengl入门教程(精)
  • 命令以管理员运行
  • 可序列化的类被标记为
  • listview控件设置多个列
  • unity教程 知乎
  • 河南洛阳医疗保险电话
  • 卷票是什么票
  • 青岛市税务局长魏
  • 深圳市地方税务局历任局长
  • 怎么登录云南省招考网站
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设