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

  • 微信去电铃声怎么搞(微信去电铃声怎么设置自定义铃声)

    微信去电铃声怎么搞(微信去电铃声怎么设置自定义铃声)

  • 小米10青春版支持的传感器有哪些(小米10青春版支持广电卡吗)

    小米10青春版支持的传感器有哪些(小米10青春版支持广电卡吗)

  • 微信怎么清理内存(微信怎么清理内存苹果)

    微信怎么清理内存(微信怎么清理内存苹果)

  • 苹果7怎么删除桌面软件(苹果7怎么删除内存清理)

    苹果7怎么删除桌面软件(苹果7怎么删除内存清理)

  • 手机看短信时自动退出(手机短信打开后会自动关闭)

    手机看短信时自动退出(手机短信打开后会自动关闭)

  • 电容大小与什么有关(电容大小的作用)

    电容大小与什么有关(电容大小的作用)

  • 微信注销手机号可以解绑吗(微信注销手机号多久能绑其他微信)

    微信注销手机号可以解绑吗(微信注销手机号多久能绑其他微信)

  • qq音乐包和绿钻豪华版的区别(qq音乐包和绿钻豪华版哪个好)

    qq音乐包和绿钻豪华版的区别(qq音乐包和绿钻豪华版哪个好)

  • 表格不能打字怎么回事(表格内打不了字)

    表格不能打字怎么回事(表格内打不了字)

  • 计算机按照用途可分为(计算机按照用途可以分为)

    计算机按照用途可分为(计算机按照用途可以分为)

  • hid compliant mouse是什么

    hid compliant mouse是什么

  • 毒上可以退货吗(毒上面能不能退货)

    毒上可以退货吗(毒上面能不能退货)

  • qq误充svip能退吗(qq误充svip能退吗手机上的)

    qq误充svip能退吗(qq误充svip能退吗手机上的)

  • 拼多多昵称是账号吗(拼多多昵称是账号名字吗)

    拼多多昵称是账号吗(拼多多昵称是账号名字吗)

  • 微型计算机内存容量指(微型计算机内存容量是指)

    微型计算机内存容量指(微型计算机内存容量是指)

  • 手机照相机wb是什么意思(手机相机中wb是什么意思呀)

    手机照相机wb是什么意思(手机相机中wb是什么意思呀)

  • 芒果tv学生会员怎么弄(芒果tv学生会员不小心取消了)

    芒果tv学生会员怎么弄(芒果tv学生会员不小心取消了)

  • 手机上出现hd是怎么回事(手机上出现HD是什么情况怎么取消)

    手机上出现hd是怎么回事(手机上出现HD是什么情况怎么取消)

  • 电话手表sim卡怎么装(电话手表电话卡)

    电话手表sim卡怎么装(电话手表电话卡)

  • 米聊怎么搜索附近的人(米聊搜不到了)

    米聊怎么搜索附近的人(米聊搜不到了)

  • 小米8断触解决方法(小米八屏幕断触)

    小米8断触解决方法(小米八屏幕断触)

  • 火山小视频怎么发小火苗(火山小视频怎么找回原来的账号)

    火山小视频怎么发小火苗(火山小视频怎么找回原来的账号)

  • 如何让计算机长期不操作时不自动睡眠(计算机怎么设置长亮)

    如何让计算机长期不操作时不自动睡眠(计算机怎么设置长亮)

  • 本地连接没有了怎么办(本地连接没有了怎么恢复)

    本地连接没有了怎么办(本地连接没有了怎么恢复)

  • win10多任务切换怎么切(切换到多任务界面)

    win10多任务切换怎么切(切换到多任务界面)

  • YOLOv5的head详解(yolov5 output)

    YOLOv5的head详解(yolov5 output)

  • PHPCMS怎么配置https?(phpcms 数据库配置文件)

    PHPCMS怎么配置https?(phpcms 数据库配置文件)

  • 企业的其他业务收入包括哪些
  • 增值税加计抵减政策10%和15%
  • 借款合同印花税税率2023
  • 标的物的风险负担
  • 汇算清缴的费用会计怎么做账
  • 年末暂估下年怎么入账
  • 个体户交了增值税又开负数发票怎么退税
  • 公司新售楼总部房产税怎样算?
  • 往来核算在会计哪个科目
  • 企业只有收入没有支出是否违规
  • 免税单位取得增值税发票
  • 股权转让分期收款怎么企业所得税
  • 营改增后小规模ktv怎么纳税
  • 刻章发票可以抵税吗
  • 开票资料上的电话可以是手机吗?
  • 利息保障倍数为负数说明什么
  • 行政事业性收费计入什么科目
  • 人工智能对财务人员的挑战与机遇
  • 开具的红字发票金税三期怎么报税?
  • 企业捐赠扣除
  • 车辆购置税退税条件
  • 税务没有核定印花税
  • 税务发票原件
  • 企业的银行存款日记账属于
  • 分支机构注销留抵税额可以税前扣除吗?
  • 去年多计提的个税如何处理
  • mac怎么调整网页大小
  • 缴纳印花税怎么算
  • 商标注册费相关法律法规
  • 购买原材料的运输费计入什么科目
  • 微商行业代理奖金如何入账
  • 收到厂家返利怎么做账务处理
  • linux 匹配字符
  • 如何给电脑文件加密并设置密码
  • 股权处置的形式
  • 其他应付款余额在借方表示什么意思
  • linux 速度
  • 借入资金一般采用借入()进行
  • citespace分析derwent
  • php curl命令详解
  • 挂靠借用资质账务处理?
  • 供热企业的税收分类编码
  • axios有哪些常用方法
  • 女方结婚申请
  • 哪些合同必须签订书面合同
  • SQLite教程(十):内存数据库和临时数据库
  • 建筑企业工程结算账务处理
  • 个税出现负数是什么意思
  • 小型微利企业所得税按什么预缴
  • 没有发票的房租怎么入账
  • 房地产公司活动方案
  • 缴纳车辆购置税有发票吗
  • 异地预缴税款怎么做账
  • 小规模纳税人劳务派遣可以差额征税吗
  • 附加税的印花税怎么计算
  • 销项负数发票给谁
  • 跨年度冲红字发票账务处理
  • 其他权益工具投资公允价值变动计入什么科目
  • 建账初期账务处理程序
  • 不同银行的存款
  • 64位CentOs7源码安装mysql-5.6.35过程分享
  • win10重置登录
  • win10系统怎么调
  • linux如何查询
  • win10系统打不开控制面板
  • linux mv命令详解
  • centos8查看进程
  • centos 安装
  • macbookair控制面板
  • 进入linux命令行
  • linux免安装软件
  • three.js菜鸟教程
  • 万向节锁到底是什么
  • linux常用shell命令
  • android基础教程
  • jquery实现二级联动菜单
  • 房产税的计税依据及税率
  • 企业税费如何计算
  • 国家税务总局查询发票
  • 徐州市税务局第三稽查局
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设