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 相关文章推荐
判断客户端浏览器是否安装了Flash插件的多种方法
Aug 11 Javascript
jquery点击页面任何区域实现鼠标焦点十字效果
Jun 21 Javascript
js中return false(阻止)的用法
Aug 14 Javascript
浅析Javascript匿名函数与自执行函数
Feb 06 Javascript
Bootstrap Chart组件使用教程
Apr 28 Javascript
JS异步函数队列功能实例分析
Nov 28 Javascript
vue-cli脚手架引入图片的几种方法总结
Mar 13 Javascript
vue2 mint-ui loadmore实现下拉刷新,上拉更多功能
Mar 21 Javascript
swiper实现异形轮播效果
Nov 28 Javascript
node.js使用 http-proxy 创建代理服务器操作示例
Feb 10 Javascript
vue项目接口管理,所有接口都在apis文件夹中统一管理操作
Aug 13 Javascript
react国际化react-intl的使用
May 06 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+JS无限级可伸缩菜单详解(简单易懂)
2007/01/02 PHP
ubuntu 编译安装php 5.3.3+memcache的方法
2010/08/05 PHP
php数组声明、遍历、数组全局变量使用小结
2013/06/05 PHP
PHP中读取照片exif信息的方法
2014/08/20 PHP
利用PHPStorm如何开发Laravel应用详解
2017/08/30 PHP
PHP children()函数讲解
2019/02/03 PHP
php 使用mpdf实现指定字段配置字体样式的方法
2019/07/29 PHP
Javascript 构造函数 实例分析
2008/11/26 Javascript
jquery 简单图片导航插件jquery.imgNav.js
2010/03/17 Javascript
javascript实现的使用方向键控制光标在table单元格中切换
2010/11/17 Javascript
jQuery使用andSelf()来包含之前的选择集
2014/05/19 Javascript
javascript如何定义对象数组
2016/06/07 Javascript
JS表格组件BootstrapTable行内编辑解决方案x-editable
2016/09/01 Javascript
jquery层级选择器(匹配父元素下的子元素实现代码)
2016/09/05 Javascript
AngularJS变量及过滤器Filter用法分析
2016/11/22 Javascript
微信小程序开发之麦克风动画 帧动画 放大 淡出
2017/04/18 Javascript
Vue实战之vue登录验证的实现代码
2017/10/31 Javascript
微信小程序module.exports模块化操作实例浅析
2018/12/20 Javascript
在Node.js中将SVG图像转换为PNG,JPEG,TIFF,WEBP和HEIF格式的方法
2019/08/22 Javascript
微信小程序 获取手机号 JavaScript解密示例代码详解
2020/05/14 Javascript
解决Vue @submit 提交后不刷新页面问题
2020/07/18 Javascript
为什么JavaScript中0.1 + 0.2 != 0.3
2020/12/03 Javascript
在Python中关于中文编码问题的处理建议
2015/04/08 Python
python制作最美应用的爬虫
2015/10/28 Python
Python中使用OpenCV库来进行简单的气象学遥感影像计算
2016/02/19 Python
Python扩展内置类型详解
2018/03/26 Python
Pycharm取消py脚本中SQL识别的方法
2018/11/29 Python
解析python的局部变量和全局变量
2019/08/15 Python
python根据文本生成词云图代码实例
2019/11/15 Python
美国知名日用品连锁超市:Dollar General(多来店)
2017/01/14 全球购物
美国职棒大联盟官方网上商店:MLBShop.com
2017/11/12 全球购物
全球最大的房车租赁市场:Outdoorsy
2018/09/19 全球购物
手工制作的音乐盒:Music Box Attic
2019/09/05 全球购物
毕业生自荐书
2013/12/18 职场文书
党风廉政建设责任书
2014/04/14 职场文书
幼儿园母亲节活动总结
2015/02/10 职场文书