位置: 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代码)

  • 季度报税是哪几个月几号申报
  • 公司减免社保到几月份
  • 盘库应该由公司什么部门负责
  • 以前年度损益缴纳的税款在企业所得税中怎么表示
  • 金融服务费进项可以抵扣吗
  • 外经证预交几个点
  • 资本公积在现金流量表哪里体现
  • 事业支出期末如何结转?
  • 专利费代缴
  • 未分配利润转增股本需要缴纳企业所得税吗
  • 变更许可证情况说明书模板
  • 预收账款转为主营业务收入
  • 为什么有的单位没有住房公积金
  • 应交增值税最后到哪了
  • 餐饮发票一千多钱税
  • 离婚房屋权属变动怎么办
  • 保理利率多少可以买房
  • 完全成本法下期间费用应当包括
  • 免税行业企业
  • 公司充加油卡发票税额为0 怎么入账
  • 离职后绩效奖金应该按照整月发吗
  • 其他有形动产租赁服务
  • 企业银行存款转定期分录怎样操作
  • 贴现利息计算器
  • 投入资本回报率是总资产报酬率吗
  • 已抵扣的固定资产进项税转出如何处理
  • 代扣的工会会费和工会经费
  • 学php的书
  • 公司收到发票怎么做账
  • php 调用函数
  • 境外汇款预处理是什么意思
  • 以前年度损益调整账务处理分录
  • phpstudy目录
  • vue $route
  • 从零开始文章
  • 150讲轻松搞定python网络爬虫
  • php 电子签名
  • 承租人对融资租赁的处理原则
  • 营业外收支的账户是什么
  • 什么是应收账款信用管理制度
  • 预计负债初始计量的最佳估计数的确定是会计估计变更吗
  • 委托代销受托方会计分录
  • 开票机号填错了怎么办
  • MYSQL administrator 使用
  • 小规模季度开票不超过多少
  • 原材料发生退货怎么处理
  • 小规模纳税人需要每月清卡吗
  • 小规模纳税人报税
  • 预提费用多提了怎么办
  • 库存商品对外销售会计分录
  • 建筑企业收挂靠公司的管理费如何做账?
  • 出资注意事项有哪些内容
  • 未交增值税增加记哪方
  • 小规模季报成功后怎么缴费
  • 总分类账,明细分类账,日记账
  • 美容行业如何做好管理工作
  • 应付票据在资产负债表怎么填列
  • sql server的相关技术知识
  • ubuntu怎么修改网络配置
  • centos查看当前yum源
  • win7系统鼠标右键菜单设置
  • 解决登陆xp系统问题
  • win7 如何截屏
  • 如何关闭win8的windows defender
  • js绑定onchange
  • 辅组什么词?
  • jquery mobile ui
  • unity3d动态加载资源
  • nodejs bull
  • shell脚本实例精讲
  • jquery属性选择器,选取所有带href
  • python获取xhr
  • python list的操作
  • Python中字符串的定界符
  • 江西国税发票查询官网
  • 广东增值税电子普通发票图片
  • 已申报的纳税申报表怎么修改
  • 亚马逊墨西哥站扣款20
  • 12366国税网上申报
  • 武汉市江岸区工商局咨询电话
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设