vue强制刷新组件的方法示例


Posted in Javascript onFebruary 28, 2019

前言:

在开发过程中,有时候会遇到这么一种情况,通过动态的赋值,但是dom没有及时更新,能够获取到动态赋的值,但是无法获取到双向绑定的dom节点,这就需要我们手动进行强制刷新组件。

官网是这样说的:

vue强制刷新组件的方法示例

可能你还不大理解,请继续往下看,下面是我的一个例子,来详细解说了这个方法的使用,

vue强制刷新组件的方法示例

第一个打印结果

vue强制刷新组件的方法示例

第二个打印结果

         vue强制刷新组件的方法示例

一、问题描述:父组件通过v-for渲染子组件,删除子组件数据出现异常。

<code class="language-plain"><section v-if="isrefresh" v-for="(sign,index) in signs">  
  <sign-card></sign-card> 
</section></code>

 二、问题原因:出现异常的数据不是响应式依赖,是从vuex读取的。通过测试发现,父组件删除数据,没有重新创建子组件,怀疑是子组件异常的数据是读取的缓存副本。

三、问题解决:根据v-if改变dom结构的特性,手动使子组件重新创建。

1.设置一个数据变量isrefresh=true

vue强制刷新组件的方法示例

2.初始v-if=isrefresh

vue强制刷新组件的方法示例

3.删除时,配合$nextTick()DOM渲染回调函数,使子组件重新创建

vue强制刷新组件的方法示例
/************************************************************************************************************************************/ 

PS:vue 强制刷新子组件

把一个组件重置到初始状态是一个常见的需求,推荐的做法有两种,一种是父组件重置子组件的 prop,另一种是子组件暴露一个重置的方法供父组件调用。但有些时候,子组件既没有提供重置的方法,也没提供 prop 来重置自己的状态。更重要的是,这个子组件我们还动不了。于是我们就需要一种 hack 的方式来强制子组件重置到初始状态。方法如下:

//   原理就是:采用v-if会销毁组件并且重绘,这样就会重载组件
// 子组件:自己封装的组件
  <IncomeStatistics v-if="DestroyIncomeStatistics == true"
              ref="IncomeStatisticsChild"></IncomeStatistics>
// 然后再父组件内的增删改查方法中操作,就好了
this.DestroyIncomeStatistics = false;
// 然后你的方法成功后
// Vue 实现响应式并不是数据发生变化之后 DOM 立即变化,而是按一定的策略进行 DOM 的更新。
// 在vue的深入响应式原理中有解释:
// $nextTick 是在下次 DOM 更新循环结束之后执行延迟回调,在修改数据之后使用 $nextTick,则可以在回调中获取更新后的 DOM
  this.$nextTick(() => {
     this.DestroyIncomeStatistics = true;
    });
//这样的话就会完成强制刷新

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript使用encodeURI()和decodeURI()获取字符串值的方法
Aug 04 Javascript
详解JavaScript中jQuery和Ajax以及JSONP的联合使用
Aug 13 Javascript
浅析JS动态创建元素【两种方法】
Apr 20 Javascript
jQuery中deferred对象使用方法详解
Jul 14 Javascript
AngularJS基础 ng-open 指令简单实例
Aug 02 Javascript
教你如何在Node.js中使用jQuery
Aug 28 Javascript
bootstrap警告框使用方法解析
Jan 13 Javascript
vue webpack开发访问后台接口全局配置的方法
Sep 18 Javascript
javascript设计模式 ? 解释器模式原理与用法实例分析
Apr 17 Javascript
Angular5整合富文本编辑器TinyMCE的方法(汉化+上传)
May 26 Javascript
vue 项目@change多个参数传值多个事件的操作
Jan 29 Vue.js
JS 4个超级实用的小技巧 提升开发效率
Oct 05 Javascript
ES6中Set和Map数据结构,Map与其它数据结构互相转换操作实例详解
Feb 28 #Javascript
Vue CLI3.0中使用jQuery和Bootstrap的方法
Feb 28 #jQuery
Vue多组件仓库开发与发布详解
Feb 28 #Javascript
JavaScript数组去重的方法总结【12种方法,号称史上最全】
Feb 28 #Javascript
vue-cli3+typescript初体验小结
Feb 28 #Javascript
详解超简单的react服务器渲染(ssr)入坑指南
Feb 28 #Javascript
JS浅拷贝和深拷贝原理与实现方法分析
Feb 28 #Javascript
You might like
用Php实现链结人气统计
2006/10/09 PHP
如何使用Strace调试工具
2013/06/03 PHP
基于php常用函数总结(数组,字符串,时间,文件操作)
2013/06/27 PHP
php清空(删除)指定目录下的文件,不删除目录文件夹的实现代码
2014/09/04 PHP
PHP读书笔记_运算符详解
2016/07/01 PHP
php实现微信小程序授权登录功能(实现流程)
2019/11/13 PHP
百度 popup.js 完美修正版非常的不错 脚本之家推荐
2009/04/17 Javascript
jQuery语法高亮插件支持各种程序源代码语法着色加亮
2013/04/27 Javascript
js获取某月的最后一天日期的简单实例
2013/06/22 Javascript
js对列表中第一个值处理与jsp页面对列表中第一个值处理的区别详解
2013/11/05 Javascript
Javascript基于对象三大特性(封装性、继承性、多态性)
2016/01/04 Javascript
Angular 4.x+Ionic3踩坑之Ionic 3.x界面传值详解
2018/03/13 Javascript
解决Vue项目打包后打开index.html页面显示空白以及图片路径错误的问题
2019/10/25 Javascript
[08:02]DOTA2牵红线 zhou神抱得美人归
2014/03/22 DOTA
[49:56]VG vs Optic 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
python中的字典详细介绍
2014/09/18 Python
Django发送html邮件的方法
2015/05/26 Python
Python3 中把txt数据文件读入到矩阵中的方法
2018/04/27 Python
对python中list的拷贝与numpy的array的拷贝详解
2019/01/29 Python
Python根据当前日期取去年同星期日期
2019/04/14 Python
python画图的函数用法以及技巧
2019/06/28 Python
python使用itchat模块给心爱的人每天发天气预报
2019/11/25 Python
python 循环数据赋值实例
2019/12/02 Python
解决Python数据可视化中文部分显示方块问题
2020/05/16 Python
Python通过递归函数输出嵌套列表元素
2020/10/15 Python
雅诗兰黛香港官网:Estee Lauder香港
2017/09/26 全球购物
莱德杯高尔夫欧洲官方商店:Ryder Cup Shop
2019/08/14 全球购物
VisionPros美国站:加拿大在线隐形眼镜和眼镜零售商
2020/02/11 全球购物
蛋糕店的商业计划书范文
2014/01/27 职场文书
《窗前的气球》教学反思
2014/04/07 职场文书
关心下一代工作先进事迹
2014/08/15 职场文书
高中美术教师事迹材料
2014/08/22 职场文书
我与祖国共奋进演讲稿
2014/09/13 职场文书
优秀护士事迹材料
2014/12/25 职场文书
2014年个人总结范文
2015/03/09 职场文书
Python 数据可视化工具 Pyecharts 安装及应用
2022/04/20 Python