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 相关文章推荐
我遇到的参数传递中 双引号单引号嵌套问题
Feb 11 Javascript
在次封装easyui-Dialog插件实现代码
Nov 14 Javascript
javascript+xml实现简单图片轮换(只支持IE)
Dec 23 Javascript
jquery 操作两个select实现值之间的互相传递
Mar 07 Javascript
javascript结合fileReader 实现上传图片
Jan 30 Javascript
Js为表单动态添加节点内容的方法
Feb 10 Javascript
详解JavaScript中void语句的使用
Jun 04 Javascript
详解javascript中的事件处理
Nov 06 Javascript
JS实时弹出新消息提示框并有提示音响起的实现代码
Apr 20 Javascript
原生Javascript和jQuery做轮播图简单例子
Oct 11 Javascript
基于jQuery实现照片墙自动播放特效
Jan 12 Javascript
angular过滤器实现排序功能
Jun 27 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自动获取目录下的模板的代码
2010/08/08 PHP
PHP实现的oracle分页函数实例
2016/01/25 PHP
smarty学习笔记之常见代码段用法总结
2016/03/19 PHP
WAF的正确bypass
2017/01/05 PHP
laravel框架实现后台登录、退出功能示例
2019/10/31 PHP
一个可以显示阴历的JS代码
2007/03/05 Javascript
javascript 验证日期的函数
2010/03/18 Javascript
js 小数取整的函数
2010/05/10 Javascript
使用jquery局部刷新(jquery.load)从数据库取出数据
2014/01/22 Javascript
JavaScript实现Flash炫光波动特效
2015/05/14 Javascript
基于JavaScript获取鼠标位置的各种方法
2015/12/16 Javascript
三种Node.js写文件的方式
2016/03/08 Javascript
jquery动态切换背景图片的简单实现方法
2016/05/14 Javascript
Bootstrap表单控件使用方法详解
2017/01/11 Javascript
.net MVC+Bootstrap下使用localResizeIMG上传图片
2017/04/21 Javascript
详解设置Webstorm 利用babel将ES6自动转码成ES5
2017/12/20 Javascript
JavaScript EventEmitter 背后的秘密 完整版
2018/03/29 Javascript
Vue Promise的axios请求封装详解
2018/08/13 Javascript
Vue中多个元素、组件的过渡及列表过渡的方法示例
2019/02/13 Javascript
基于vue-cli3创建libs库的实现方法
2019/12/04 Javascript
解决elementUI 切换tab后 el_table 固定列下方多了一条线问题
2020/07/19 Javascript
python遍历数组的方法小结
2015/04/30 Python
使用pyecharts在jupyter notebook上绘图
2020/04/23 Python
Python操作csv文件实例详解
2017/07/31 Python
Python基于identicon库创建类似Github上用的头像功能
2017/09/25 Python
python web基础之加载静态文件实例
2018/03/20 Python
python numpy 显示图像阵列的实例
2018/07/02 Python
python 利用文件锁单例执行脚本的方法
2019/02/19 Python
python3利用Socket实现通信的方法示例
2019/05/06 Python
Python 如何实现访问者模式
2020/07/28 Python
Html5游戏开发之乒乓Ping Pong游戏示例(三)
2013/01/21 HTML / CSS
详解HTML5中download属性的应用
2015/08/06 HTML / CSS
美国床垫和床上用品公司:Nest Bedding
2017/06/12 全球购物
毕业生就业推荐信范文
2013/12/01 职场文书
杜甫草堂导游词
2015/02/03 职场文书
2015年秋季开学典礼校长致辞
2015/07/16 职场文书