位置: IT常识 - 正文

Vue页面路由参数的传递和获取(vue 路由)

编辑:rootadmin
Vue页面路由参数的传递和获取 文章目录1. 通过动态路由参数传递2. 通过query字符串传递3. props 隐式传递

推荐整理分享Vue页面路由参数的传递和获取(vue 路由),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:vue页面路由传参,vue路由用法,vue页面路由配置和使用,vue页面路由配置和使用,vue路由两种方式,vue路由用法,vue路由设置参数,vue 页面路由,内容如对您有帮助,希望把文章链接给更多的朋友!

vue 页面路由切换时传参的方式有如下几种:

动态路由参数

它隐藏字段信息,相对于来说较安全,同时地址栏中的地址也相对较短

它必须是先定义后使用,一般用于根据固定参数,返回对应的数据所用

query字符串 ?id=1

通过search字符串的方式来在地址栏中传递数据,相对于来说地址栏会暴露字段信息安全性较低,一般用于搜索相关,它可以不定义就可以直接用

props 隐式传递

隐式传递,它一般用于敏感数据的传递,可以不用

cookie/storage来完成对于页面传参

1. 通过动态路由参数传递

描述:

当我们确定了某一个页面需要根据唯一标识来获取详情的时候,我们一般使用动态路由传递参数。

要注意,通过这种方式传递数据,动态路由必须先定义后使用,并且获取数据时需要唯一标识。

使用:

Vue页面路由参数的传递和获取(vue 路由)

news.js(这个文件是从 index.js 文件中抽取拆分出来的,最终要被引入到 insex.js 文件中):

import News from '@/views/News'import Detail from '@/views/Detail'const routes = [ { path: '/news', component: News, }, { // 通过动态路由参数来完成页面数据的传递 path: '/news/:id', component: Detail, },]export default routes

index.js:

import Vue from 'vue'import VueRouter from 'vue-router'import news from './routes/news'// 以插件的方式添加Vue.use(VueRouter)// 实例化路由对象及配置路由表const routes = [...news]const router = new VueRouter({ // 路由模式 mode: 'history', // 路由规则表 routes})export default router

new.json(虚拟新闻 mooc 数据):

[ { "id": 1000, "title": "新闻1" }, { "id": 2000, "title": "新闻2" }, { "id": 3000, "title": "新闻3" }]

new.vue(新闻页):

<template> <div> <ul> <template v-if="news == null"> <li>加载中...</li> </template> <template v-else> <li @click="godetail(item.id)" v-for="item in news" :key="item.id">{{ item.title }}</li> </template> </ul> </div></template><script>import { get } from '@/utils/http'export default { data() { return { news: null } }, async created() { let ret = await get('/mock/news.json') this.news = ret }, methods: { godetail(id) { this.$router.push(`/news/${id}`) } }}</script><style lang="scss" scoped></style>

detail.vue(新闻详情页):

<template> <div> </div></template><script>export default { mounted() { // 获取动态路由参数数据 console.log(this.$route.params) }}</script><style lang="scss" scoped></style>

2. 通过query字符串传递

new.vue(新闻页):

<template> <div> <ul> <template v-if="news == null"> <li>加载中...</li> </template> <template v-else> <li @click="godetail(item.id)" v-for="item in news" :key="item.id">{{ item.title }}</li> </template> </ul> </div></template><script>import { get } from '@/utils/http'export default { data() { return { news: null } }, async created() { let ret = await get('/mock/news.json') this.news = ret }, methods: { godetail(id) { this.$router.push(`/news/${id}?kw=abc`) } }}</script><style lang="scss" scoped></style>

detail.vue(新闻详情页):

<template> <div> </div></template><script>export default { mounted() { // 获取query字符串 console.log(this.$route.query) }}</script><style lang="scss" scoped></style>

3. props 隐式传递

news.js:

import News from '@/views/News'import Detail from '@/views/Detail'const routes = [ { path: '/news', component: News, }, { // 通过动态路由参数来完成页面数据的传递 path: '/news/:id', component: Detail, // 写法1:回调函数写法,可以书写业务逻辑 // router它就是一个路由对象 props: router => { let title = router.params.id == '1000' ? '爆炸新闻' : '一般新闻' return { state: 2000, title } }, // 写法2:这是一种没什么用的写法,没有业务逻辑 // props: { title: '1', state: 2 } }]export default routes

new.vue(新闻页):

<template> <div> <ul> <template v-if="news == null"> <li>加载中...</li> </template> <template v-else> <li @click="godetail(item.id)" v-for="item in news" :key="item.id">{{ item.title }}</li> </template> </ul> </div></template><script>import { get } from '@/utils/http'export default { data() { return { news: null } }, async created() { let ret = await get('/mock/news.json') this.news = ret }, methods: { godetail(id) { this.$router.push(`/news/${id}?kw=abc`) } }}</script><style lang="scss" scoped></style>

detail.vue(新闻详情页):

<template> <div> <h3>props: {{ state }} -- {{ title }}</h3> </div></template><script>export default { props: ['state','title'],}</script><style lang="scss" scoped></style>

这种传递方式,可以敏感字段从地址栏中隐藏,不会暴露数据,而且回调函数的写法可以书写业务逻辑。

这种方式可以做数据埋点(也叫用户指纹),即隐蔽地收集用户数据。用户每次跳转页面都会触发 props 隐式传递,从而做到用户数据的收集。收集到数据后,通过python、大数据等技术,为用户建模,生成人物画像,由此可以进行大数据推荐。

除了上面两种写法以外,还有第三种写法

news.js:

import News from '@/views/News'import Detail from '@/views/Detail'const routes = [ { path: '/news', component: News, }, { // 通过动态路由参数来完成页面数据的传递 path: '/news/:id', component: Detail, // 写法3:布尔类型 // 布尔类型,一但使用,params动态路由参数传的数据,可以通过props来获取 // 设置为布尔类型,可以简化,动态路由参数的数据获取 props: true, }]export default routes

detail.vue(新闻详情页):

<template> <div> <!-- 直接通过 props 获取动态路由参数 --> <h3>props: {{ $route.params }} -- {{ id }}</h3> </div></template><script>export default { props: ["id"],};</script><style lang="scss" scoped></style>

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

上一篇:【AI大比拼】文心一言 VS ChatGPT-4

下一篇:Python CNN卷积神经网络实例讲解,CNN实战,CNN代码实例,超实用(cnn卷积神经网络python代码)

  • win10如何升级win11(win10如何升级win)

    win10如何升级win11(win10如何升级win)

  • 钉钉怎么发起课程签到(钉钉怎么发起课堂会议视频)

    钉钉怎么发起课程签到(钉钉怎么发起课堂会议视频)

  • 小米体脂称2和1区别(小米体脂称2和八电极体脂称)

    小米体脂称2和1区别(小米体脂称2和八电极体脂称)

  • 文件过大怎么缩小(文件过大怎么缩小图片)

    文件过大怎么缩小(文件过大怎么缩小图片)

  • 华为荣耀20Pro怎么关闭智慧语音(华为荣耀20Pro怎么root)

    华为荣耀20Pro怎么关闭智慧语音(华为荣耀20Pro怎么root)

  • 抖音提现限额怎么办(抖音提现限额怎么取消)

    抖音提现限额怎么办(抖音提现限额怎么取消)

  • rx580上市日期(rx580哪一年出的)

    rx580上市日期(rx580哪一年出的)

  • 微机系统普遍使用的字符编码(微机系统采用什么结构)

    微机系统普遍使用的字符编码(微机系统采用什么结构)

  • opporeno3pro耳机插口在哪(opporeno3pro手机耳机插孔)

    opporeno3pro耳机插口在哪(opporeno3pro手机耳机插孔)

  • 怎样横排自动求和(怎么横着自动求和)

    怎样横排自动求和(怎么横着自动求和)

  • 新qq多久才能绑定微信(新注册的qq要多久可以绑微信号)

    新qq多久才能绑定微信(新注册的qq要多久可以绑微信号)

  • 平板wlan和cellular有什么区别(平板wlan和5g区别)

    平板wlan和cellular有什么区别(平板wlan和5g区别)

  • vivox23左边的按键是干嘛的(vivox23左边的按键是什么)

    vivox23左边的按键是干嘛的(vivox23左边的按键是什么)

  • 换货成功还能退货吗(换货以后可以再退嘛)

    换货成功还能退货吗(换货以后可以再退嘛)

  • 打电话说暂停服务是什么意思(打电话说暂停服务,但别人打得进来)

    打电话说暂停服务是什么意思(打电话说暂停服务,但别人打得进来)

  • 网络是什么东西(炎魂网络是什么东西)

    网络是什么东西(炎魂网络是什么东西)

  • 苹果手表电池能用几年(苹果手表电池能用一天吗)

    苹果手表电池能用几年(苹果手表电池能用一天吗)

  • 语音设置在哪(语音设置在哪里打开)

    语音设置在哪(语音设置在哪里打开)

  • 人工智能的核心(人工智能的核心内容是大数据吗)

    人工智能的核心(人工智能的核心内容是大数据吗)

  • 苹果x充电为啥这么慢(苹果x为什么充电)

    苹果x充电为啥这么慢(苹果x为什么充电)

  • Mac系统频繁弹出本地项目钥匙串提示怎么办?(macbook自动弹出页面)

    Mac系统频繁弹出本地项目钥匙串提示怎么办?(macbook自动弹出页面)

  • Win11应用商店上架 Windows Linux 子系统(WSL):程序升级更快,无需升级操作系统(win11 应用商店)

    Win11应用商店上架 Windows Linux 子系统(WSL):程序升级更快,无需升级操作系统(win11 应用商店)

  • vue解决Not allowed to load local resource(vue解决跨域问题)

    vue解决Not allowed to load local resource(vue解决跨域问题)

  • 前端直接生成GIF动态图实践(前端生成docx)

    前端直接生成GIF动态图实践(前端生成docx)

  • 小规模纳税人如何计算增值税
  • 企业所得税是含税价还是不含税价
  • 买一赠一的税务处理
  • 所得税申报是什么
  • 工会经费支付福利方案
  • 其他应收款增加银行存款减少的原因
  • 个人所得税怎么交
  • 发票与入库单明细不一致税务可以吗
  • 冲销以前年度营业外支出
  • 新企业第一次报所得税
  • 资本回收系数怎么求
  • 固定资产没收到发票收到实物入账有什么风险
  • 货发出款未收的会计分录怎么做?
  • 生产企业原材料的订购与运输论文
  • 文化用品利润怎么样
  • 小规模纳税人财务报表是按季还是按月申报
  • 未确认收入的增值税怎么记账
  • 总账科目和明细科目余额分析填列
  • 公司对外汇款需要什么手续
  • 哪里查询发票是否抵扣
  • 财务费用为什么会出现负数
  • 库存现金与实际不符怎么调
  • 结转出租设备的会计分录
  • Mac SIP系统完整性保护开启及关闭的方法介绍
  • deldir.exe是什么
  • newdot.exe - newdot是什么进程 有什么用
  • 研发费用加计扣除75%还是100%
  • php100 jquery教程
  • cesium三维地球
  • 阿里云jar包
  • 房地产企业如何计算土地使用税
  • 外贸企业退运后的进项税如何处理
  • 企业工会注销怎么办理
  • 服务行业的进项
  • 人工智能的几个发展阶段
  • 培训学校主营业务成本明细科目设置
  • 企业的存货采用计划成本核算的,在资产负债表日
  • 分期收款企业所得税确认时间
  • vue3技巧
  • bp-神经网络
  • php常用时间函数
  • 不是销售类的工作可以做什么
  • 豪华车消费税的计算公式
  • 所得税费用会计处理
  • 一个简单的web项目名称
  • 普通发票红冲需要拿回原发票吗
  • 免增值税项目可以抵扣吗
  • 织梦图片集如何调用
  • 跨省市提供建筑服务
  • 小规模纳税人有几种税率
  • mysql错误代码1067
  • 哪些发票不能用
  • 什么是存货周转天数
  • 公司举办活动的好处
  • 费用报销单干嘛用
  • 有限公司能否申请银行存对支票
  • 购买设备怎么开专票
  • 长期待摊费用什么时候结束摊销
  • 开红字发票需要具备什么条件
  • 哪些账簿可以跨市登记
  • 设置centos时区修改时间的方法
  • mac死机按什么都没用
  • centos7 dns
  • linux操作系统版本有哪些
  • win7显示网上邻居图标
  • win7总是弹出广告怎么办
  • 移动宽带解绑怎么办理
  • win10系统代理在哪
  • win10预览文件怎么显示内容
  • python输出1-100
  • cocos 2d x
  • Error: String types not allowed (at 'layout_gravity' with value 'bottom/center_horizontal').
  • android拖拽
  • bootstrap按钮的风格有哪些?
  • 湖南国税电子税务局网
  • 出口退税是指对出口货物退还其在国内
  • 湖南省电子税务局
  • 车辆购置税计入固定资产一起折旧吗
  • 纳税服务基本情况总结
  • 记账凭证编制的依据可以用
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设