位置: IT常识 - 正文

vue子组件监听父组件数据变化并作出改变(亲测有效)(vue子组件监听父组件)

编辑:rootadmin
vue子组件监听父组件数据变化并作出改变(亲测有效) vue子组件监听父组件数据变化并作出改变(亲测有效)1. 问题1.1 封装组件时经常会遇到子组件需要根据父组件数据变化并执行对应的操作逻辑1.2 监听方法中加了deep、immediate 等参数监听数组/对象还是没有生效1.3 类型table组件需要根据父组件数据变化对表格数据进行更新1.4 根据数据动态渲染组件需实时监听父组件变化1.5 使用$refs 有些时候很难找到嵌套组件的ref2. 思路2.1 本文章主要的思路就是 provide / inject

推荐整理分享vue子组件监听父组件数据变化并作出改变(亲测有效)(vue子组件监听父组件),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:vue子组件监听父组件传过来的数组变化,vue子组件监听父组件变化watcheffect,vue子组件监听父组件,vue子组件监听父组件数据,vue子组件监听父组件事件,vue子组件监听父组件属性变化,vue子组件监听父组件传值变化,vue子组件监听父组件属性变化,内容如对您有帮助,希望把文章链接给更多的朋友!

2.2 创建父组件时,无论有多少层级的子组件都可以进行数据的相互依赖2.3 那么在子组件可以利用这些依赖对父组件数据进行监听3. 解决方法3.1 首先在父组件定义 provide,代码如下//父组件提供参数给子组件(响应式时需设置为对象)provide(){ return { superParams:this }},data(){ //定义几个参数return {test:{ testLevel1:{ testLevel2:'' } }, testList:[]}}3.2 子组件添加 inject,代码如下// 子组件:childrenComponent1inject: ['superParams'],watch:{ //监听数据变化 'superParams.test':{ immediate:true, // 将立即以表达式的当前值触发回调 handler:function (val,oldVal) { console.log("监听test对象"); console.log(val,oldVal); }, deep:true, }, 'superParams.test.testLevel1':{ immediate:true, // 将立即以表达式的当前值触发回调 handler:function (val,oldVal) { console.log("监听testLevel1属性"); console.log(val,oldVal); }, deep:true, }, 'superParams.test.testLevel1.testLevel2':{ immediate:true, // 将立即以表达式的当前值触发回调 handler:function (val,oldVal) { console.log("监听testLevel1属性"); console.log(val,oldVal); }, deep:true, }, 'superParams.testList':{ immediate:true, // 将立即以表达式的当前值触发回调 handler:function (val,oldVal) { console.log("监听testList数组"); console.log(val,oldVal); }, deep:true, }}3.3 另外一个子组件触发父组件数据变化(同/不同层级都可以触发)// 子组件:childrenComponent2inject: ['superParams'],mounted(){ this.superParams.test.testLevel1.testLevel2 = 'testLevel22'; this.superParams.testList.push({test:'test'})}举例一(子组件按顺序展示):先显示childrenComponent2 ,再到childrenComponent1,(下图的数据在childrenComponent1展示后输出)结果如图所示

举例二(子组件都展示, 在父组件或其他地方触发数据更新)vue子组件监听父组件数据变化并作出改变(亲测有效)(vue子组件监听父组件)

在父组件添加一个按钮点击触发方法代码如下

updateText(){ console.log("Text数据更新"); this.test.testLevel1.testLevel2 = 'testLevel22'; this.testList.push({test:'test'})}

结果如下图所示

注意当前组件监听方法数据作出了改变,但组件却没有更新,这时需在组件本身找更新原因组件显示时会对监听方法进行初始化对于对象存在多层的监听问题,可监听整个对象对于数组会不会存在漏监听的情况,经测试调用数组的pop、push、shift、unshift、splice、sort、reverse等方法时是可以监听到数组的变化immediate、deep 要了解补充

针对注意点1,以el-input-number(element ui)组件为例

<el-input-number v-model="item.max" @change="handleChange" :min="0" :key="Math.random()" :max="superParams.max"></el-input-number>

在没有加上 :key=“Math.random()” 前组件并没有随着父组件数据(superParams.max)变化

加上后可根据父组件数据动态改变

父组件改变参数值代码如下图所示

'formData.isTrue':function (val,oldVal) { if(val){ this.max = 100; }else { this.max = 50; }},

并不是所有组件都能用 :key=“Math.random()” ,某些组件使用后会出现卡顿或者无法输入值

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

上一篇:微信小程序项目实例——我有一支画笔(画画)(微信小程序项目中app.js文件是全局样式文件)

下一篇:使用vite 搭建vue 3的项目(vite搭建vue3)

  • pencil一代怎么看电量(pencil一代怎么看充满电了没有)

    pencil一代怎么看电量(pencil一代怎么看充满电了没有)

  • 苹果的屏幕镜像怎么连接电视机(苹果的屏幕镜像可以连ipad吗)

    苹果的屏幕镜像怎么连接电视机(苹果的屏幕镜像可以连ipad吗)

  • 苹果ios12虚拟按键怎么设置(iphone虚拟按钮)

    苹果ios12虚拟按键怎么设置(iphone虚拟按钮)

  • 华为开发者选项在哪(华为开发者选项怎么关闭)

    华为开发者选项在哪(华为开发者选项怎么关闭)

  • 佳能4752硒鼓型号(佳能4752硒鼓加粉图解)

    佳能4752硒鼓型号(佳能4752硒鼓加粉图解)

  • 装显卡后核显还工作吗(插了显卡核显没反应)

    装显卡后核显还工作吗(插了显卡核显没反应)

  • cdr导不出来图怎么办(cdr导不出图片)

    cdr导不出来图怎么办(cdr导不出图片)

  • 移动三星用户可以欠费多少(移动三星用户可以免费补卡吗)

    移动三星用户可以欠费多少(移动三星用户可以免费补卡吗)

  • 屏蔽和删除有什么区别(屏蔽跟删除的区别)

    屏蔽和删除有什么区别(屏蔽跟删除的区别)

  • 关机和手机没电提示一样吗(关机手机没电了)

    关机和手机没电提示一样吗(关机手机没电了)

  • 华为手机玩游戏掉帧怎么办(华为手机玩游戏卡顿怎么办)

    华为手机玩游戏掉帧怎么办(华为手机玩游戏卡顿怎么办)

  • ppt图片怎么设置透视(ppt图片怎么设置透明度)

    ppt图片怎么设置透视(ppt图片怎么设置透明度)

  • 金立m6故事锁屏怎么开(金立m6怎样关闭故事锁屏)

    金立m6故事锁屏怎么开(金立m6怎样关闭故事锁屏)

  • 怎么在表格里查找内容(怎么在表格里查找数据有几个)

    怎么在表格里查找内容(怎么在表格里查找数据有几个)

  • 苹果7刷脸解锁怎么设置(苹果7刷脸解锁没反应)

    苹果7刷脸解锁怎么设置(苹果7刷脸解锁没反应)

  • 目录上的小点点怎么弄(目录上的小点点怎么变密)

    目录上的小点点怎么弄(目录上的小点点怎么变密)

  • 淘宝直播浮现权开通条件(淘宝直播浮现权怎么样才能获得)

    淘宝直播浮现权开通条件(淘宝直播浮现权怎么样才能获得)

  • g4900相当于酷睿i几(g4900是几代cpu)

    g4900相当于酷睿i几(g4900是几代cpu)

  • 抖音直播间怎样隐身(抖音直播间怎样设置管理员)

    抖音直播间怎样隐身(抖音直播间怎样设置管理员)

  • doboyg是什么牌子的(doboy是什么牌子的)

    doboyg是什么牌子的(doboy是什么牌子的)

  • 手机上有个翻译功能在哪里(打开手机翻译)

    手机上有个翻译功能在哪里(打开手机翻译)

  • 变焦镜头和定焦镜头的区别(变焦镜头和定焦镜头哪个好)

    变焦镜头和定焦镜头的区别(变焦镜头和定焦镜头哪个好)

  • 巧影哪个版本有色度键(巧影哪个版本好用)

    巧影哪个版本有色度键(巧影哪个版本好用)

  • 简播是什么(简播是什么平台)

    简播是什么(简播是什么平台)

  • 如何使用excel画曲线图(如何使用excel画二极管元件伏安特性曲线图)

    如何使用excel画曲线图(如何使用excel画二极管元件伏安特性曲线图)

  • 如何将Linux命令设置成键盘快捷键?(linux如何将命令结果输出到文件)

    如何将Linux命令设置成键盘快捷键?(linux如何将命令结果输出到文件)

  • 开启资源管理器中的文件选择复选框功能(开启资源管理器自动刷新功能)

    开启资源管理器中的文件选择复选框功能(开启资源管理器自动刷新功能)

  • 销售软件系统退货怎么退
  • 海关进口增值税专用缴款书图片
  • 计提本月附加税会计分录
  • 计税工资和实发工资不一样所得税
  • 材料费发票税点
  • 限售股在锁定期内卖出
  • 支付残疾人保证金的账务处理
  • 进项税额销项税额月末需要结转吗
  • 银行贷款印花税是什么意思
  • 营改增抵减的销项税额是什么意思
  • 个人转租房屋需交税吗
  • 国有企业取得的土地收储款是否要上缴财政
  • 税控服务费的账务处理
  • 收到保险赔款是什么意思
  • 航天服务费手写发票可以抵减吗?
  • 银行承兑汇票盖已承兑登记
  • 跨年租金收入会计分录
  • 小微企业免征增值税申报表怎样填
  • 企业上月份销售收入在本月份发生销售折让时
  • 购货未能取得发票怎么办
  • 家具上的木蜡油味去除
  • 收到股利的现金会计分录
  • 0申报季末资产总额填多少
  • 汇兑结算包括
  • 小规模计提缴纳增值税
  • ie浏览器打开后显示已停止工作
  • 员工退回多发的工资,是上缴国库还是财政专户
  • 员工的罚款计入什么科目
  • 补缴社保公积金
  • 公司股东转账进公司账户,会计分录
  • php curd
  • 息税前利润和税前净利润的关系
  • wrme.exe是什么
  • 什么是融资租赁型校园贷
  • 进项税额不得抵扣的情况有哪些
  • 水獭冬眠吗?
  • 行政单位捐赠收入属于什么收入
  • 收付控制状态不正常
  • vue-router + element-plus实现面包屑导航栏和路由标签栏
  • react错误处理
  • 微信小程序基于什么框架
  • 企业一般账户开户申请理由
  • 手机开的发票
  • 折扣和佣金合法的两个条件是什么?
  • 终止劳动合同赔偿N+1
  • 国税办税人员怎么解绑
  • 经营户个人所得税
  • MySQL数据库性能优化
  • mysql索引命令
  • 如何结转完工入库的产品成本
  • 增值税发票联次及其作用
  • 发票收款人和复核人在哪儿政
  • 捆绑销售如何做税务处理合适?
  • 软件产品销售合同范本
  • 差旅费报销金额怎么算
  • 临时工工资会计凭证
  • 主营业务收入借方表示
  • 个体户记账报税
  • 企业间借款利息最新规定
  • 个体户能开建筑劳务发票吗
  • 注册资本越多越好吗
  • 工业企业低值易耗品二级科目
  • 10种Java开发者编写SQL语句时常见错误
  • win2003安全模式怎么进
  • ubuntu help
  • win8defender怎么打开
  • winXP系统修复
  • 开启电脑上帝模式
  • win10关闭系统服务
  • windows8消费预览版中图片密码使用教程
  • P2PNetworking3.exe - P2PNetworking3是什么进程 有什么用
  • 怎么放大linux字体
  • jquery的实现原理
  • perl 获取数据库查询结果
  • 非递归与递归
  • 使用驱动器u盘之前需要格式化
  • unity投影交互开发
  • 境外抵免限额如何申请
  • 北京税务网点
  • 增值税发票如何红冲
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设