位置: IT常识 - 正文

vue父子组件传值不能实时更新(vue父子组件传值方法)

编辑:rootadmin
vue父子组件传值不能实时更新

推荐整理分享vue父子组件传值不能实时更新(vue父子组件传值方法),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:vue父子组件传值面试题,vue父子组件传值 watch监控调用多吃,vue父子组件传值原理,vue父子组件传值传不过去,vue父子组件传值面试题,vue父子组件传值传不过去,vue父子组件传值实时更新,vue父子组件传值实时更新,内容如对您有帮助,希望把文章链接给更多的朋友!

最近做项目,遇到个大坑,这会爬出来了,写个总结,避免下次掉坑。

vue父子组件传值不能实时更新问题,父组件将值传给了子组件,但子组件显示的值还是原来的初始值,并没有实时更新,为什么会出现这种问题呢?

出现这个问题,可能有以下两个原因:

一、 父组件没有把值传过去,子组件没有获取到最新的值。

二、子组件接收到最新的值了,但是没有实时渲染到视图上。

如果是第一种情况很简单,核对传的参数,确保把最新的值传过去就可以了。

若是第二种情况,稍微有些麻烦,但也可以解决,主要有两种解决方案:

① 利用v-if的重新渲染机制,获取到值之后,将子组件重新渲染一遍。

② 利用watch监听数据,若是数据变化,调用视图渲染方法。

下面,结合项目的实际情况,具体分析这两种方法。

vue父子组件传值不能实时更新(vue父子组件传值方法)

在项目中,将erchart中的生成仪表盘的数据封装了一个子组件,父组件中传给仪表盘一个初始值,后续,调用后台接口返回最新的数据传给这个仪表盘组件的之后,发现仪表盘中的数据并没有实时的更新。仪表盘如下图:

 首先,利用第①种方法,利用v-if渲染机制

设置一个参数reRender。设置v-if=“reRender”,并将reRender初始值设置为false,从后台获取数据之后,将reRender=true。

这样就能够将最新的数据渲染到子组件的视图中了。但这样,如果我在同一个页面中调用了很多次这个子组件,生成多个仪表盘,就需要设置很多个类似于reRender的属性。

那么有的小可爱就提出来了,我设置一个reRender属性,然后几个子组件共用这个属性不就可以了吗,几个后台接口调完更新数据之后在统一将reRender=true。

这种方法,我尝试过了,不可以,我不知道原因。

只有将reRender=true放在那个调接口的方法里,获取到后台数据之后,才可以。尝试了网上提出的强制更新的方法,也不行。

所以,遇到这种一个页面调用多个这种组件的情况,使用v-if就很繁琐。

若是,别人封装了这么一个组件,数据更新的时候还要利用v-if重新渲染一下,那就感觉这个组件可能封装的不是太好,所以,咱们还是完善子组件。

这里就涉及到了第二种方法,设置watch监听,监听数据,当子组件监听到数据发生改变时,调用方法。

监听传的数据,这里面用到了两个属性immediate和deep,在watch中,不会监听初始值,只有当值改变时才会执行handler函数。但是,我们想要在最初赋值的时候,也执行handler函数,就需要用到immediate:true。而普通监听只能监听字符串、数字等值,要想监听到对象中某个属性的变化,就需要用到深度监听deep:true。

 在这之后,我发现控制台报错了, ”TypeError: Cannot read property ‘getAttribute’ of undefined”,如下所示:

 后面查了一些资料是因为:在vue中,数据和dom渲染是异步的,当dom还没渲染,却用数据去赋值的话,就会出现这个问题。解决方法是:利用this.$nextTick()。this.$nextTick()将数据渲染方法放到dom渲染之后,这样就不会出现这个问题了。

 依此,子组件数据就可以实时更新了。如下图:

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

上一篇:超分扩散模型 SR3 可以做图像去雨、去雾等恢复任务吗?(扩散分类)

下一篇:数据分析| Pandas200道练习题,使用Pandas连接MySQL数据库(数据分析课)

  • 政府农民合作社架构
  • 金银首饰销售需求分析
  • 买交强险需要把车开过去吗
  • 公司购买新车购置税是否可以抵扣呢
  • 临时工工资怎么申报个人所得税
  • 进项大于销项怎么结转分录
  • 招待费汇算清缴扣除比例
  • 房租收据样式
  • 物业费免交条件
  • 工商营业执照已经年报为什么显示未公示
  • 中外合资经营企业法
  • 国库存款利息收入计入哪个预算收入科目
  • 现金折扣是否可抵税
  • 结余资金财政收回如何做账
  • 金税三期的变化
  • 外贸企业购进货物出口后,应退消费税应当贷记
  • 个人缴纳的公积金可以贷款吗
  • 资产负债表中应收账款的计算公式
  • 购入低值易耗品计入什么科目
  • 修理时换下的废品配件怎么处理?
  • 床垫增值税税率是多少
  • 已核销的应收账款
  • 进项税未抵扣会计分录
  • 企业所得税汇算清缴表
  • 电脑bios错误怎么办
  • php中split
  • 印花税会计分录2023
  • 公司水费怎么算
  • php读取目录
  • 小规模纳税人结转损益会计分录
  • 深入解析wordpress
  • php文件修改后,打开还是显示以前的页面
  • 预算超支怎么办
  • php 集成环境
  • 基于Selenium的自动化测试平台设计与实现
  • 解决掉发的有效方法
  • js数组分组并排序
  • ai线型工具介绍
  • 去年计提的费用所得税汇算清缴之前冲销就不调整吗
  • 出口货物视同内销征税的会计核算?
  • 一般企业预缴税额怎么算
  • 公司账户转私账违法吗
  • 公司注册资金表格模板
  • 预缴的企业所得税怎么做账
  • phpcms v9网页禁止复制
  • 综合所得计税依据
  • 哪些固定资产不会贬值
  • Windows2003 SQL2005添加系统用户修改系统登录密码
  • asp 数据库
  • sqlserver判断查询结果是否为空
  • 预缴税金用于抵减税费
  • 办公费税前扣除标准2023年
  • 会计继续教育的发票在哪里打
  • 退休返聘人员工伤怎么赔偿
  • 加计扣除是什么时候申报
  • 非公司股东可以分红吗
  • 支付银行贷款利息的会计处理
  • 企业专家咨询费标准
  • 什么是大病医疗救助
  • 减免税款月末是否结平
  • 企业会计准则第4号固定资产
  • 固定资产计提折旧的方法
  • 摊余成本计入哪里
  • 工业企业应付账款怎么算
  • sql中的存储过程
  • sql存储过程实例详解
  • windows哪个最好用
  • ubuntu pdf编辑器
  • win7系统打印机共享给win10
  • linux系统怎么弄
  • vue如何进行组件化开发
  • unity总结
  • 如何用node搭建服务器
  • python流数据
  • python中对象的概念
  • js函数的声明方式
  • cocos2d-x安装
  • 支付水电费的增值税税率文件
  • 社保ukey怎么使用
  • 国税发2014年39号
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设