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 表单的友好用户体现
Jan 07 Javascript
从零开始学习jQuery (十) jQueryUI常用功能实战
Feb 23 Javascript
JQuery实现表格中相同单元格合并示例代码
Jun 26 Javascript
浅析JSONP技术原理及实现
Jun 08 Javascript
AngularJS实现一次监听多个值发生的变化
Aug 31 Javascript
手机端js和html5刮刮卡效果
Sep 29 Javascript
angular十大常见问题
Mar 07 Javascript
JavaScript变量声明var,let.const及区别浅析
Apr 23 Javascript
WebPack配置vue多页面的技巧
May 15 Javascript
jQuery+CSS实现的标签页效果示例【测试可用】
Aug 14 jQuery
解决JS表单验证只有第一个IF起作用的问题
Dec 04 Javascript
vue.js实现只能输入数字的输入框
Oct 19 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
Yii PHP Framework实用入门教程(详细介绍)
2013/06/18 PHP
thinkphp3.2.2实现生成多张缩略图的方法
2014/12/19 PHP
php使用array_search函数实现数组查找的方法
2015/06/12 PHP
PHP中SERIALIZE和JSON的序列化与反序列化操作区别分析
2016/10/11 PHP
PHP页面跳转实现延时跳转的方法
2016/12/10 PHP
详谈php中 strtr 和 str_replace 的效率问题
2017/05/14 PHP
Dojo之路:如何利用Dojo实现Drag and Drop效果
2007/04/10 Javascript
Dojo 学习笔记入门篇 First Dojo Example
2009/11/15 Javascript
Jquery 高亮显示文本中重要的关键字
2009/12/24 Javascript
ASP.NET中基于JQUERY的高性能的TreeView补充
2011/02/23 Javascript
js 取时间差去掉周六周日实现代码
2012/12/25 Javascript
控制input输入框中提示信息的显示和隐藏的方法
2014/02/12 Javascript
Seajs的学习笔记
2014/03/04 Javascript
详解JavaScript中undefined与null的区别
2014/03/29 Javascript
浅析JQuery中的html(),text(),val()区别
2014/09/01 Javascript
js实现简单鼠标跟随效果的方法
2015/04/10 Javascript
jq stop()和:is(:animated)的用法及区别(详解)
2017/02/12 Javascript
jQuery插件artDialog.js使用与关闭方法示例
2017/10/09 jQuery
详解vuex之store拆分即多模块状态管理(modules)篇
2018/11/13 Javascript
Mpvue中使用Vant Weapp组件库的方法步骤
2019/05/16 Javascript
vue中watch和computed为什么能监听到数据的改变以及不同之处
2019/12/27 Javascript
JS中多层次排序算法的实现代码
2021/01/06 Javascript
Python遍历pandas数据方法总结
2018/02/09 Python
python实现最大优先队列
2019/08/29 Python
以SQLite和PySqlite为例来学习Python DB API
2020/02/05 Python
多重CSS背景动画实现方法示例
2014/04/04 HTML / CSS
马来西亚网上购物平台:ezbuy
2018/02/13 全球购物
HEMA法国:荷兰原创设计
2019/02/21 全球购物
学校十一活动方案
2014/02/01 职场文书
校长先进事迹材料
2014/02/01 职场文书
捐资助学感谢信
2015/01/21 职场文书
高中社区服务活动报告
2015/02/05 职场文书
结婚幸福感言
2015/08/01 职场文书
2016党员学习《反对自由主义》心得体会
2016/01/22 职场文书
Django+Celery实现定时任务的示例
2021/06/23 Python
Tomcat 与 maven 的安装与使用教程
2022/06/16 Servers