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之AJAX框架使用说明
Apr 24 Javascript
纯CSS打造的导航菜单(附jquery版)
Aug 07 Javascript
javascript高级程序设计第二版第十二章事件要点总结(常用的跨浏览器检测方法)
Aug 22 Javascript
一个js控制的导航菜单实例代码
Dec 03 Javascript
javascript判断chrome浏览器的方法
Mar 26 Javascript
javascript实现类似超链接的效果
Dec 26 Javascript
coffeescript使用的方式汇总
Aug 05 Javascript
JavaScript关联数组用法分析【概念、定义、遍历】
Mar 15 Javascript
js判断PC端与移动端跳转
Dec 24 Javascript
jQuery遍历节点方法汇总(推荐)
May 13 jQuery
jQuery实现所有验证通过方可提交的表单验证
Nov 21 jQuery
详解Vue-cli中的静态资源管理(src/assets和static/的区别)
Jun 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
php面向对象全攻略 (三)特殊的引用“$this”的使用
2009/09/30 PHP
PHP学习笔记之二 php入门知识
2011/01/12 PHP
Warning: session_destroy() : Trying to destroy uninitialized sessionq错误
2011/06/16 PHP
PHP删除HTMl标签的三种解决方法
2013/06/30 PHP
PHP获取某个月最大天数(最后一天)的方法
2015/07/29 PHP
PDO::rollBack讲解
2019/01/29 PHP
jquery json 实例代码
2010/12/02 Javascript
JS判断对象是否存在的10种方法总结
2013/12/23 Javascript
jquery进行数组遍历如何跳出当前的each循环
2014/06/05 Javascript
通用无限极下拉菜单的实现代码
2016/05/31 Javascript
详解Nodejs之npm&amp;package.json
2017/06/15 NodeJs
Three.js如何实现雾化效果示例代码
2017/09/27 Javascript
Vue基于NUXT的SSR详解
2017/10/24 Javascript
详解webpack4升级指南以及从webpack3.x迁移
2018/06/12 Javascript
vue+node实现图片上传及预览的示例方法
2018/11/22 Javascript
基于vue3.0.1beta搭建仿京东的电商H5项目
2020/05/06 Javascript
vue实现列表滚动的过渡动画
2020/06/29 Javascript
[56:57]LGD vs VP 2019DOTA2国际邀请赛淘汰赛 胜者组赛BO3 第一场 8.20.mp4
2019/08/22 DOTA
Python合并多个Excel数据的方法
2018/07/16 Python
Python @property使用方法解析
2019/09/17 Python
Django之form组件自动校验数据实现
2020/01/14 Python
深入浅析Python 函数注解与匿名函数
2020/02/24 Python
Python基于yield遍历多个可迭代对象
2020/03/12 Python
Python virtualenv虚拟环境实现过程解析
2020/04/18 Python
Python Web项目Cherrypy使用方法镜像
2020/11/05 Python
Pandas对每个分组应用apply函数的实现
2020/12/13 Python
鱼油专家:Omegavia
2016/10/10 全球购物
Ralph Lauren法国官网:美国高品味时装品牌
2017/12/08 全球购物
Strawberrynet草莓网新加坡站:护肤、彩妆、香水及美发产品
2018/08/31 全球购物
英智兴达软件测试笔试题
2016/10/12 面试题
软件工程师面试题
2012/06/25 面试题
this关键字的作用
2016/01/30 面试题
优秀本科生求职推荐信
2014/02/24 职场文书
幼儿园元旦活动感言
2014/03/02 职场文书
年底个人总结范文
2015/03/10 职场文书
剑指Offer之Java算法习题精讲二叉树的构造和遍历
2022/03/21 Java/Android