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

  • ipadmini1是哪一年的(ipadmini1是哪一年上市的)

    ipadmini1是哪一年的(ipadmini1是哪一年上市的)

  • 抖音慢放特效的步骤是什么(抖音里哪个特效是慢动作)

    抖音慢放特效的步骤是什么(抖音里哪个特效是慢动作)

  • mate30pro微信视频带美颜功能吗

    mate30pro微信视频带美颜功能吗

  • 淘宝退货规则有哪些(2020淘宝退款退货规则)

    淘宝退货规则有哪些(2020淘宝退款退货规则)

  • 小米手机有没有体温计(小米手机有没有双系统)

    小米手机有没有体温计(小米手机有没有双系统)

  • 为什么手机一会亮一会暗(为什么手机一会有声音一会没声音)

    为什么手机一会亮一会暗(为什么手机一会有声音一会没声音)

  • g41主板支持多大内存(g41主板支持多大显卡)

    g41主板支持多大内存(g41主板支持多大显卡)

  • 微电网是什么(微电网)

    微电网是什么(微电网)

  • 苹果5c现在还能用吗(苹果5c现在还能刷机吗)

    苹果5c现在还能用吗(苹果5c现在还能刷机吗)

  • iphone可以连pencil吗(Iphone可以连接三星耳机吗)

    iphone可以连pencil吗(Iphone可以连接三星耳机吗)

  • 卡贴机sim卡无效怎么办(卡贴机sim卡无效2022)

    卡贴机sim卡无效怎么办(卡贴机sim卡无效2022)

  • 剪映哪个版本有画中画功能(剪映哪个版本有荧光线描特效)

    剪映哪个版本有画中画功能(剪映哪个版本有荧光线描特效)

  • excel的工作薄是什么(excel工作薄是什么格式)

    excel的工作薄是什么(excel工作薄是什么格式)

  • 华为nova6呼吸灯在哪(华为nova6呼吸灯设置)

    华为nova6呼吸灯在哪(华为nova6呼吸灯设置)

  • 多媒体系统只能在微机上运行吗(多媒体系统的常用设备有什么)

    多媒体系统只能在微机上运行吗(多媒体系统的常用设备有什么)

  • 抖音私聊能显示已读吗(抖音私聊能显示ip属地明)

    抖音私聊能显示已读吗(抖音私聊能显示ip属地明)

  • ipad屏幕失灵怎么办(ipad屏幕失灵怎么强制关机)

    ipad屏幕失灵怎么办(ipad屏幕失灵怎么强制关机)

  • pdu有什么用(pdu原理)

    pdu有什么用(pdu原理)

  • 16个常见的BIOS硬盘故障现象及急救措施(bios里硬盘是哪个)

    16个常见的BIOS硬盘故障现象及急救措施(bios里硬盘是哪个)

  • Win11 全新右键菜单获开发者支持,WinRAR 已完成适配:无须再忍受二级菜单(win11 桌面右键)

    Win11 全新右键菜单获开发者支持,WinRAR 已完成适配:无须再忍受二级菜单(win11 桌面右键)

  • MediaAccK.exe是什么进程 有什么用 MediaAccK进程查询(mediacachefiles什么意思)

    MediaAccK.exe是什么进程 有什么用 MediaAccK进程查询(mediacachefiles什么意思)

  • 前端跨域问题的解决方案Access to XMLHttpRequest at ‘http..’ from origin ‘null‘ has been blocked by CORS policy(前端跨域的方法)

    前端跨域问题的解决方案Access to XMLHttpRequest at ‘http..’ from origin ‘null‘ has been blocked by CORS policy(前端跨域的方法)

  • 应交税费负数调整到其他流动资产
  • 政府收回土地补偿款是否缴纳土地增值税
  • 生产经营所得个人所得税怎么申报
  • 计提并结转所得税分录
  • 物流企业缴纳哪几种税
  • 公司中介费收入如何纳税
  • 水利基金申报表减除项填什么
  • 机动船舶缴纳车船税吗
  • 项目规划设计费用取费标准
  • 应付账款借方余额在资产负债表中怎么列示
  • 耕地占用税如何做账
  • 临时建筑进项税可以一次抵扣吗?
  • 企业发放防暑降温物品依据
  • 建筑材料发票备注栏没写工程名称和工程地点能用吗
  • 打车进项可以抵扣吗
  • 车辆购置税完税证明电子版二维码怎么扫
  • 网络发票开具
  • 外聘人才一次性工资费用入账什么分录?
  • 持有至到期投资减值准备
  • 餐饮业会计做账技巧
  • 残疾人增值税即征即退政策2020
  • pgptray.exe - pgptray是什么进程 有什么用
  • flash process
  • php语言之面向对象编程 educoder
  • coded language
  • 坎伯兰森林西部
  • batchsize1
  • 纳税人超过应缴纳税额缴纳的税款
  • php模板引擎类
  • 拦截器拦截html
  • 残保金员工人数怎么算
  • 代收代付业务需要开发票吗
  • 逾期未收回包装物押金会计分录
  • 公司员工餐费会计分录
  • 销售折扣增值税例题
  • 原始凭证分割单样本图片
  • 哪些计入管理费用哪些计入资本公积
  • 支付国外佣金的税率多少
  • 今年利润弥补以前年度亏损如何记账
  • mysql误删数据
  • mysql查询时间段的交集数据
  • 小规模纳税人代账费用
  • 什么样的纳税人属于小规模纳税人
  • 企业收取的丢失物品
  • 为什么出口退税率低于适用税率
  • 收到的货品与实物不符
  • 交易性金融资产的入账价值
  • 超期应收款管控
  • 日用品增值税率是多少
  • 预交企业所得税税率
  • 当期应纳税额是什么意思
  • sql删除查询结果
  • 安装并激活navicat
  • 高端电脑品牌
  • ubuntu14.04 LTS 下vsftpd安装与配置教程详解
  • video for windows是什么
  • win8系统怎么设置
  • 部分用户开启隐私,暂时无法查看怎么办
  • win10开机黑屏进入不了系统界面
  • mac新版系统
  • win7系统关闭防火墙怎么关闭
  • 如何设置windows hello
  • es6class类用法
  • font:inherit
  • react-navigation 如何判断用户是否登录跳转到登录页的方法
  • jquery 伪元素
  • nginx日志切割原理
  • node.js的理解
  • android网络编程题库
  • unity3d ik
  • jquery中有哪些dom操作?
  • 查汽车发票从哪个网站查
  • 粮食企业所得税税率
  • 什么是增值税一般纳税人证明
  • 河北保定地税局官网
  • 北京税务网上营业厅官网
  • 汽车票换票需要手续费吗
  • 税务局风险防控工作总结
  • 国税发票如何查真伪查询
  • 土地使用税征收时间
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设