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

  • 数据透视表怎么更新数据(数据透视表怎么变成正常的表格)

    数据透视表怎么更新数据(数据透视表怎么变成正常的表格)

  • 腾讯会议离开会议会被发现吗(腾讯会议离开会议主持人会有弹窗吗)

    腾讯会议离开会议会被发现吗(腾讯会议离开会议主持人会有弹窗吗)

  • 电脑怎么强行结束应用(电脑怎么强行结束一个任务)

    电脑怎么强行结束应用(电脑怎么强行结束一个任务)

  • 苹果怎么取消云上贵州的自动续费(苹果怎么取消云备份)

    苹果怎么取消云上贵州的自动续费(苹果怎么取消云备份)

  • 苹果双卡双待能下载两个微信吗(苹果双卡双待能用两个微信吗)

    苹果双卡双待能下载两个微信吗(苹果双卡双待能用两个微信吗)

  • word文档取消兼容模式怎么办(word2003怎么取消兼容模式)

    word文档取消兼容模式怎么办(word2003怎么取消兼容模式)

  • 安卓连接airpods声音小(安卓连接airpods pro)

    安卓连接airpods声音小(安卓连接airpods pro)

  • 中英文输入方式切换的组合键是(中英文输入方式切换)

    中英文输入方式切换的组合键是(中英文输入方式切换)

  • pckmoo是哪款手机型号(pccmoo是什么手机)

    pckmoo是哪款手机型号(pccmoo是什么手机)

  • 芒果app弹幕哪里开(芒果tvapp弹幕)

    芒果app弹幕哪里开(芒果tvapp弹幕)

  • 投影仪为什么一卡一卡(投影仪为什么一边清晰一边模糊)

    投影仪为什么一卡一卡(投影仪为什么一边清晰一边模糊)

  • 华为电脑鼠标没反应是什么原因啊(华为电脑鼠标没电了)

    华为电脑鼠标没反应是什么原因啊(华为电脑鼠标没电了)

  • 开机速度和什么有关(电脑开机速度取决于什么)

    开机速度和什么有关(电脑开机速度取决于什么)

  • 收款小助手怎么添加成员(收款小助手怎么删除成员)

    收款小助手怎么添加成员(收款小助手怎么删除成员)

  • 苹果11用的什么cpu(苹果11用的什么基带)

    苹果11用的什么cpu(苹果11用的什么基带)

  • 淘宝店铺二维码在哪里找(淘宝店铺二维码是永久有效吗)

    淘宝店铺二维码在哪里找(淘宝店铺二维码是永久有效吗)

  • 手机不能照相了怎么回事(手机不能照相了怎么恢复)

    手机不能照相了怎么回事(手机不能照相了怎么恢复)

  • 荣耀20指纹解锁在哪(荣耀20指纹解锁失灵)

    荣耀20指纹解锁在哪(荣耀20指纹解锁失灵)

  • 淘宝小黑盒是什么(淘宝小黑盒质量好吗)

    淘宝小黑盒是什么(淘宝小黑盒质量好吗)

  • solidworks尺寸(solidworks尺寸显示0.01)

    solidworks尺寸(solidworks尺寸显示0.01)

  • 耳机字母代表什么意思(耳机上的数字是什么意思)

    耳机字母代表什么意思(耳机上的数字是什么意思)

  • 华为p30手机介绍(华为p30手机介绍图片)

    华为p30手机介绍(华为p30手机介绍图片)

  • Vue--》详解Vue组件生命周期的三个阶段(vue组件入门)

    Vue--》详解Vue组件生命周期的三个阶段(vue组件入门)

  • 织梦通过ID搜索出对应文章结果的实现办法(织梦如何采集文章)

    织梦通过ID搜索出对应文章结果的实现办法(织梦如何采集文章)

  • 纳税申报的具体要求
  • 专票没有抵扣联可以作废吗
  • 政府扶持资金要还吗如村委借给企业对吗
  • 企业奖励的目的
  • 增值税免税和即税的区别
  • 增值税认证逾期怎么处理
  • 建筑安装工程承包合同
  • 分摊材料成本差异的会计处理
  • 收外汇需要提供什么
  • 是否有综合所得申报是什么意思
  • 预付费服务是什么
  • 企业的其他业务收入有
  • Win10系统cpu性能如何调高 Win10把cpu性能调到极佳的方法
  • 手机连不上wifi显示已停用是怎么回事
  • 出口退税业务流程顺序
  • win10怎么建立多个用户
  • 可转债发行费用税前扣除
  • cpu资源占用高怎么办
  • google谷歌浏览器下载电脑版
  • 金融业贷款损失多少
  • 华沙的教堂
  • 预提费用新会计准则叫什么科目
  • 补充养老保险税前扣除标准与扣除比例
  • 小规模纳税人广告费是什么票据类型的
  • 租赁收入确认时点
  • elm命令 纯文本邮件客户端程序
  • python字符串字面量有哪4种
  • 盈余公积金的账务处理
  • 安全文明措施费比例
  • 开具劳务发票需要提供什么资料?
  • 法人章两个字的怎么印
  • 百度怎么自动下载视频
  • ieee compel 2021
  • 增值税发票上多了一个点能刮掉吗
  • mongodb数据库查询用多少存储
  • 几个项目可以合到一起招标吗
  • 企业管理费用的分类
  • 商业折扣影响销售成本吗
  • 汇算清缴没有调整怎么办
  • 跨年增值税专用发票红字发票怎么开
  • 想买微波炉
  • 企业所得税季度平均值怎么算
  • 利息收入如何入会计科目
  • 收到投资款如何做账务处理
  • 税控服务费全额抵扣怎么申报
  • 药店医保收入如何查询
  • 冲回去年收入会计分录
  • 长期借款和长期贷款一样吗
  • 股东分红按利润表的净利润计算
  • 资产减值损失和资产处置损益区别
  • 对外投资未实缴怎么办
  • 任何单位和个人都应当()为报警
  • 福利费的范畴
  • 税审报告一定要税所主任签吗
  • 简单介绍清明上河图
  • 如何查看solaris版本
  • xp系统弹出广告怎么处理
  • 笔记本上安装软件怎么弄
  • 苹果电脑快捷键截图怎么截
  • .hpp是什么文件
  • nginx 虚拟ip
  • cfg是什么格式,怎么打开
  • windows账户升级为管理员
  • 添加或删除程序在哪win10
  • linux入门很简单
  • linux常用桌面环境
  • 麒麟Linux系统怎么进入图形化界面
  • math和maths哪个对
  • 解决胃胀气最快方法
  • pycharm如何使用
  • python虚拟环境管理
  • android webview获取文本
  • 源码分析工具
  • 深入理解中国式现代化
  • jquery easyUI中ajax异步校验用户名
  • python压缩文件为gz
  • python tcp连接
  • 10月份税务申报
  • 广东政务平台网上办事大厅
  • 残疾人在国企有补贴吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设