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 相关文章推荐
List the Codec Files on a Computer
Jun 11 Javascript
解决AJAX中跨域访问出现'没有权限'的错误
Aug 20 Javascript
javascript上传图片前预览图片兼容大多数浏览器
Oct 25 Javascript
JQuery与JS里submit()的区别示例介绍
Feb 17 Javascript
AngularJS 中文API参考手册
Jul 28 Javascript
canvas实现图像截取功能
Feb 06 Javascript
vue语法之拼接字符串的示例代码
Oct 25 Javascript
vue-cli axios请求方式及跨域处理问题
Mar 28 Javascript
vue中使用props传值的方法
May 08 Javascript
JS实现移动端在线签协议功能
Aug 22 Javascript
js实现拖拽与碰撞检测
Sep 18 Javascript
让JavaScript代码更加精简的方法技巧
Jun 01 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
暴雪前总裁遗憾:没尽早追赶Dota 取消星际争霸幽灵
2020/03/08 星际争霸
PHP初学者头疼问题总结
2006/07/08 PHP
linux下为php添加curl扩展的方法
2011/07/29 PHP
ThinkPHP连接数据库及主从数据库的设置教程
2014/08/22 PHP
php生成动态验证码gif图片
2015/10/19 PHP
php数据访问之增删改查操作
2016/05/09 PHP
Ajax中的JSON格式与php传输过程全面解析
2017/11/14 PHP
上传图片预览JS脚本 Input file图片预览的实现示例
2014/10/23 Javascript
javascript实现控制文字大中小显示
2015/04/28 Javascript
javascript动态创建表格及添加数据实例详解
2015/05/13 Javascript
ES6入门教程之Class和Module详解
2017/05/17 Javascript
Node调用Java的示例代码
2017/09/20 Javascript
JS实现获取汉字首字母拼音、全拼音及混拼音的方法
2017/11/14 Javascript
深入浅析AngularJs模版与v-bind
2018/07/06 Javascript
vue结合element-ui使用示例
2019/01/24 Javascript
优雅的使用javascript递归画一棵结构树示例代码
2019/09/22 Javascript
vue中注册自定义的全局js方法
2019/11/15 Javascript
jquery检测上传文件大小示例
2020/04/26 jQuery
JS实现时间校验的代码
2020/05/25 Javascript
Javascript实现贪吃蛇小游戏(含详细注释)
2020/10/23 Javascript
[51:05]DOTA2上海特级锦标赛主赛事日 - 5 败者组决赛Liquid VS EG第一局
2016/03/06 DOTA
Python编程实现控制cmd命令行显示颜色的方法示例
2017/08/14 Python
Python转换时间的图文方法
2019/07/01 Python
浅谈tensorflow中dataset.shuffle和dataset.batch dataset.repeat注意点
2020/06/08 Python
Python爬虫抓取论坛关键字过程解析
2020/10/19 Python
网站性能延迟加载图像的五种技巧(小结)
2020/08/13 HTML / CSS
什么是设计模式
2012/06/17 面试题
当文件系统受到破坏时,如何检查和修复系统?
2012/03/09 面试题
医院护理人员的自我评价分享
2013/10/04 职场文书
初中政治教学反思
2014/01/17 职场文书
新书吧创业计划书
2014/01/31 职场文书
2014年安全生产目标责任书
2014/07/23 职场文书
廉政承诺书范文
2015/04/28 职场文书
拒绝盗图!教你怎么用python给图片加水印
2021/06/04 Python
Python Pandas模块实现数据的统计分析的方法
2021/06/24 Python
html form表单基础入门案例讲解
2021/07/15 HTML / CSS