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聚焦于第一个字段的代码
Oct 15 Javascript
线路分流自动智能跳转代码,自动选择最快镜像网站(js)
Oct 31 Javascript
常用jQuery选择器总结
Jul 11 Javascript
jQuery中prevUntil()方法用法实例
Jan 08 Javascript
给angular加上动画效遇到的问题总结
Feb 17 Javascript
浅谈js对象的创建和对6种继承模式的理解和遐想
Oct 16 Javascript
Vue.js计算属性computed与watch(5)
Dec 09 Javascript
jq给页面添加覆盖层遮罩的实例
Feb 16 Javascript
require.js与bootstrap结合实现简单的页面登录和页面跳转功能
May 12 Javascript
iview日期控件,双向绑定日期格式的方法
Mar 15 Javascript
解决vue+element 键盘回车事件导致页面刷新的问题
Aug 25 Javascript
详解关于webpack多入口热加载很慢的原因
Apr 24 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
Zerg建筑一览
2020/03/14 星际争霸
php程序之die调试法 快速解决错误
2009/09/17 PHP
destoon数据库表说明汇总
2014/07/15 PHP
php模拟post提交数据的方法
2015/02/12 PHP
PHP入门教程之数组用法汇总(创建,删除,遍历,排序等)
2016/09/11 PHP
类似GMAIL的Ajax信息反馈显示
2010/02/16 Javascript
初窥JQuery-Jquery简介 入门了解篇
2010/11/25 Javascript
基于jquery的分页控件(C#)
2011/01/06 Javascript
动态的改变IFrame的高度实现IFrame自动伸展适应高度
2012/12/28 Javascript
Mac/Windows下如何安装Node.js
2013/11/22 Javascript
JavaScript函数详解
2014/11/17 Javascript
js采用concat和sort将N个数组拼接起来的方法
2016/01/21 Javascript
JS动态改变浏览器标题的方法
2016/04/06 Javascript
js实现页面a向页面b传参的方法
2016/05/29 Javascript
jQuery简单验证上传文件大小及类型的方法
2016/06/02 Javascript
微信小程序实现自上而下字幕滚动
2018/07/14 Javascript
JS XMLHttpRequest原理与使用方法深入详解
2020/04/30 Javascript
Python实现将HTML转换成doc格式文件的方法示例
2017/11/20 Python
python实现图书馆研习室自动预约功能
2018/04/27 Python
spark dataframe 将一列展开,把该列所有值都变成新列的方法
2019/01/29 Python
python 获取等间隔的数组实例
2019/07/04 Python
django+echart数据动态显示的例子
2019/08/12 Python
python异步编程 使用yield from过程解析
2019/09/25 Python
Python 线性回归分析以及评价指标详解
2020/04/02 Python
django 利用Q对象与F对象进行查询的实现
2020/05/15 Python
Scrapy实现模拟登录的示例代码
2021/02/21 Python
基于Html5实现的语音搜索功能
2019/05/13 HTML / CSS
Ibood荷兰:互联网每日最佳在线优惠
2019/02/28 全球购物
Daisy London官网:英国最大的首饰集团IBB旗下
2019/02/28 全球购物
linux面试题参考答案(9)
2015/01/07 面试题
什么是GWT的Entry Point
2013/08/16 面试题
公司租车协议书
2015/01/29 职场文书
2015年人力资源工作总结
2015/04/08 职场文书
食堂卫生管理制度
2015/08/04 职场文书
python自动化八大定位元素讲解
2021/07/09 Python
win10频率超出范围怎么办?win10老显示超出工作频率范围的解决方法
2022/07/07 数码科技