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

  • 劳务费增值税专用发票税率是多少
  • 小微企业企业所得税税率变化
  • 公司清理固定资产汽车怎么开票
  • 一个季度是多长时间
  • 发票认证抵扣后还有用吗
  • 电子记账软件出纳帐
  • 汇算清缴后发生销售退回会计分录
  • 转让固定资产发生的费用计入什么科目
  • 退货报废计入哪类费用
  • 字节跳动属于什么类型的企业
  • 物业公司取暖费收费标准
  • 审核费用发票需要发票吗
  • 开专用发票可以不写单位与型号么?
  • 消费型增值税计算公式
  • 纳税人必须熟知什么
  • 自建仓库转让如何计算增值税
  • 作废已开具的普通发票
  • 外派人员补助标准
  • 年末结转本年利润后再结账吗
  • 研发费用领用材料
  • 微信收款需要纳税多少
  • 上年工资计提多了才发现
  • 开发成本开发间接费用是哪类账户
  • 公司向个人租赁房屋要缴什么税
  • 小规模纳税人增值税3%减按1%
  • 对增值税发票开具方面有何要求?
  • 网速不稳定的解决方法
  • regsvc32.exe - regsvc32是什么进程 有什么用
  • 开始菜单中的磁贴是什么
  • 农产品的进项税额转出公式
  • 土地增值税预征的计征依据=预收款-应预缴增值税税款
  • 融资租入的设备为什么属于资产
  • PHP:mcrypt_generic_end()的用法_Mcrypt函数
  • easyui给下拉框赋值
  • 死亡谷景点
  • 增值税一般纳税人登记管理办法
  • vue3 ref dom
  • 什么是增值税举个例子
  • 微信小程序实现发红包
  • 海洋cms有安卓版下载
  • 培训费属于什么
  • 作废的增值税普通发票怎么处理
  • 固定资产处置的净收入计入
  • 移动平均加权法怎么算
  • 公共电话亭的话费怎么算
  • 存在弃置费用的固定资产有哪些
  • 会计费用类科目明细
  • 红字发票最多几个月
  • 补充资本金有哪些途径
  • 财政拨付注册资金怎么填
  • 资产减值损失的账务处理
  • mysql8.0 主从
  • wp_official_1.1.3.apk软件下载
  • win10怎么设置加快电脑速度
  • ubuntu 18.04网络连接
  • linux系统怎么固定ip地址
  • Win10预览版镜像
  • winxp如何设置自动关机
  • centos直接进入命令行
  • linux中make
  • frameworkservic.exe是什么进程 有什么作用 frameworkservic进程查询
  • win8系统没有自带的游戏吗
  • windows 8 开发者预览版
  • linux中安装软件可使用哪些方式
  • 电脑老是弹出提示
  • windows10version20h2的03
  • 天气8.2.0.308版本
  • win7升级win10系统要多久
  • perl @inc
  • node.js redis
  • nginx服务器日志
  • python选择器
  • node.js的安装方法
  • 置顶怎么设置
  • unity3d入门视频教程
  • jquery datatable服务端分页
  • 如何在电子税务局看本月应申报的税
  • 车辆购置税和消费税
  • 甘肃省国家税务局电子税务局
  • 乾升黄酒好吗值得买吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设