位置: IT常识 - 正文

Vue中几种常见的传参方式(vue有哪些内容)

发布时间:2024-01-17
Vue中几种常见的传参方式 前言

推荐整理分享Vue中几种常见的传参方式(vue有哪些内容),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:vue常用功能,vue常识,vue常用,vue常用语法,vue中的...,vue基本用法,vue常用,vue常用,内容如对您有帮助,希望把文章链接给更多的朋友!

Vue组件传参方也是面试最常考的内容,犹记得当初刚出来实习的时候,遇到一个需求,大概就是一个tabs下面有五个子页面,每个子页面表示订单的一种状态。当时是把五个子页面抽成了五个组件,做完后又有一个问题,就是在一个页面更改了数据状态之后,切换到另一个页面的时候要通知这个页面更新数据,当时是完全没有思路,找带我的大哥教我,讲了半天还是没有懂,最后还是大哥手把手的教我写完的,那时候觉得大哥好厉害,666,现在一想起来,不就是最简单的兄弟组件之前参数传递吗?😓今天就来回忆一下工作中常用的几种组件传参的方式。

父子组件之间传参

父子组件之间最常用的组件传参方式就是:父传子使用v-bind:attr传递,子组件使用props接收,子传父使用方法传递,父组件在方法参数中获取,即$emit['method':val],父组件使用@method接收。

// 父传子// 父组件<template> <div> 父组件 <br/> <child :name="name" @getChild="getChild"/> </div></template><script> export default { data(){ return { name:'father' } }, methods:{ getChild(val){ console.log(val) // 123 } } }</script>// 子组件<template> <div> 子组件 <br/> {{name}} <button @click="toParent">传到父组件</button> </div></template><script> export default { props:{ name:{ type: String, default:''} }, data(){ return { } }, methods:{ toParent(){ this.$emit('getChild',123) } } }</script>Vue中几种常见的传参方式(vue有哪些内容)

除此之外,vue还提供了一种语法糖,可以简单的实现父子组件间数据的双向绑定。

// 父组件<template> <div> 父组件 <br/> <child :name.sync="name" /> </div></template><script> export default { data(){ return { name:'father' } } }</script>// 子组件<template> <div> 子组件 <br/> {{name}} <button @click="toParent">传到父组件</button> </div></template><script> export default { props:{ name:{ type: String, default:''} }, data(){ return { } }, methods:{ toParent(){ this.$emit('update:name',123) } } }</script>

父组件还可以使用$refs直接调用子组件的所有属性和方法,但是并不推荐使用这种方法。

<child ref="child"></child>// 父组件可以使用$refs.child.xxx直接调用子组件的属性和方法兄弟组件之间传参

兄弟组件之间传参可以使用vuex、localStorage、sessionStorage、EventBus事件中转,前面三种方法无非就是找第三方把数据存起来,需要的时候再获取就行,这里主要讲一下事件中转的用法。

// 1.首先在app.vue种定义一个中转站,再挂载到全局对象上面。// App.vueVue.prototype.$eventBus = new Vue()// 2.在需要传递的页面使用$emit(eventName,params)发射参数this.$eventBus.$emit(eventName,params)// 3.在需要接收参数的页面使用$on(eventName,(params) => {}) 接收参数this.$eventBus.$on(eventName,(params) => {})

这种方法其实还可以用于跨层级传参,以前我很抵触这种用法,后来用过一次之后觉得真香啊。还有需要注意的一点就是在组件销毁的时候记得移除监听的事件绑定,使用$eventBus.$off(eventName)实现事件监听移除。

provide/inject传参

provide/inject可以用于跨层级传参,不过只能从上到下:

// 在上级组件中使用provide修饰的数据,在下级组件中可以使用inject接收,类似于props // 上级组件 <script> export default { data(){ return { age: 12 } }, provide(){ return { name: 111, age: this.age } } } // 下级组件 <script> export default { data(){ return { } }, inject:['name','age'] // 使用时当data数据使用就行 } </script>

值得注意的是,如果上级组件传的数据是响应式的,那么接收到的数据就是响应式的,反之亦然。 以上就是我在工作中常用的组件传参方式,喜欢的话就点个赞再走吧。

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

上一篇:【python量化】大幅提升预测性能,将NSTransformer用于股价预测(python 量化)

下一篇:4个令人惊艳的ChatGPT项目,开源了!AIGC也太猛了...(令人感到惊艳)

  • 财税通财务软件如何调整凭证间距
  • 车购税怎么计算
  • 来料加工账务处理举例
  • 开办期的所得税年度申报
  • 汇算清缴现金流量表怎么填
  • 季度收入超过30万
  • 发票金额开多了怎么处理
  • 通过扣缴义务人和综合申报哪个好
  • 多计提公积金怎么办理
  • 房产预收款怎么记帐?
  • 公司租赁的车辆发生的费用都可以报销吗?
  • 增值税销项发票冲红怎么冲
  • 深圳报关费用是多少
  • 未达起征点纳税申报表怎么填
  • 土地增值税计算表
  • 三类小规模纳税标准
  • 借方和贷方是什么意思银行存款
  • 公司 期货投资
  • 收到财政补贴收入贷记科目是
  • 企业向个人借款是否交印花税
  • 工厂产品研发代码是多少
  • 主板类型大全
  • 结转净利润到利润分配
  • 其他收入工会经费计税依据
  • 贷款本息转本金
  • 厂家赠送的原材料怎么入账
  • 公司简易注销的公示期多长时间
  • 企业分红的会计科目
  • 查补的增值税能抵留抵吗
  • 冲销多计提所得税
  • wordpress注册界面
  • 盆栽玉树的养殖方法
  • 增值税有哪些类型的税种
  • post请求怎么用
  • 损益类科目怎么结转
  • vite搭建项目
  • php实现文件的下载
  • 马塔饰件怎么样
  • 关于php中一些字符的数据
  • pytorch 例子
  • sta翻译中文
  • 宝塔主机分销系统设计
  • 自产自销农产品免税备案取消
  • okhttp源码
  • php的默认网站目录是
  • 什么企业符合高新技术企业
  • 又是客户又是供应商的舞弊行为
  • 公允价值进行会计计量
  • ibm-db2-admin
  • 资本公积和盈余公积是什么意思
  • 印花税账务处理
  • 委托代销商品支付的手续费计入销售费用吗
  • 房产契税新政策2023
  • 转账手续费没有发票能税前扣除吗
  • 微信收入构成在哪
  • 电子发票不小心删掉了怎么办
  • 报名费无发票要补交吗
  • 过路费属于会计哪个科目
  • 什么情况下增值税发票不能抵扣
  • 结存材料实际成本计算公式
  • 什么是权益性投资企业
  • 建账时应取得哪些资料
  • 新企业如何建帐
  • 未取得合法支付凭据和与本单位无关的收入
  • mysql索引的使用和原理
  • qq8.2.1版本下载正式版
  • ubuntu怎么修改网络配置
  • vm虚拟机中的网络设置怎么添加
  • launcher.exe是什么程序
  • win10系统无法打开百度网盘
  • windows 8 key
  • win7如何卸载打印机驱动程序
  • nodejs入门教程
  • 只有一行的矩阵的逆矩阵
  • 利用python绘图
  • jquery的点击事件怎么写
  • 面向对象的三大特征
  • android,ios,apicloud 同时开发两个平台应用,方便简单一体化,自带svn,云编译,中文IDE
  • 浙江省增值税勾选平台
  • 企业租赁房屋需要预缴增值税吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号