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 Array.prototype.slice使用说明
Oct 11 Javascript
jQuery EasyUI API 中文文档 - Panel面板
Sep 30 Javascript
通过javascript获取iframe里的值示例代码
Jun 24 Javascript
JavaScrip实现PHP print_r的数功能(三种方法)
Nov 12 Javascript
javascript新建标签,判断键盘输入,以及判断焦点(示例代码)
Nov 25 Javascript
jquery日历插件datepicker用法分析
Jan 22 Javascript
mvc 、bootstrap 结合分布式图简单实现分页
Oct 10 Javascript
vue 系列——vue2-webpack2框架搭建踩坑之路
Dec 22 Javascript
JavaScript实现简单的文本逐字打印效果示例
Apr 12 Javascript
微信小程序中转义字符的处理方法
Mar 28 Javascript
nuxt 路由、过渡特效、中间件的实现代码
Nov 06 Javascript
详解Vue 的异常处理机制
Nov 30 Vue.js
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
BBS(php &amp; mysql)完整版(六)
2006/10/09 PHP
超级简单的发送邮件程序
2006/10/09 PHP
php中经典方法实现判断多维数组是否为空
2011/10/23 PHP
thinkphp的URL路由规则与配置实例
2014/11/26 PHP
PHP使用内置函数file_put_contents写入文件及追加内容的方法
2015/12/07 PHP
PHP5.2中PDO的简单使用方法
2016/03/25 PHP
浅谈Laravel模板实体转义带来的坑
2019/10/22 PHP
Exitjs获取DataView中图片文件名
2009/11/26 Javascript
jquery获取input的value问题说明
2010/08/19 Javascript
jquery仿京东导航/仿淘宝商城左侧分类导航下拉菜单效果
2013/04/24 Javascript
jquery mobile changepage的三种传参方法介绍
2013/09/13 Javascript
自己封装的常用javascript函数分享
2015/01/07 Javascript
JavaScript中操作字符串之localeCompare()方法的使用
2015/06/06 Javascript
Bootstrap Chart组件使用教程
2016/04/28 Javascript
jquery.uploadifive插件怎么解决上传限制图片或文件大小问题
2017/05/08 jQuery
Vue单页式应用(Hash模式下)实现微信分享的实例
2017/07/21 Javascript
JS运算符简单用法示例
2020/01/19 Javascript
[02:25]DOTA2英雄基础教程 熊战士
2014/01/03 DOTA
详解python时间模块中的datetime模块
2016/01/13 Python
windows上安装Anaconda和python的教程详解
2017/03/28 Python
python中的文件打开与关闭操作命令介绍
2018/04/26 Python
python 以16进制打印输出的方法
2018/07/09 Python
python安装scipy的步骤解析
2019/09/28 Python
python几种常用功能实现代码实例
2019/12/25 Python
django model object序列化实例
2020/03/13 Python
简述Html5 IphoneX 适配方法
2018/02/08 HTML / CSS
亚瑟士美国官网:ASICS美国
2017/02/01 全球购物
百度软件工程师职位
2013/02/14 面试题
汽车电子与维修专业大学生求职信
2013/09/28 职场文书
护士实习自我鉴定
2013/10/22 职场文书
年会搞笑主持词串词
2014/03/24 职场文书
化学专业大学生职业生涯规划范文
2014/09/13 职场文书
民政局离婚协议书范本
2014/10/20 职场文书
如何在pycharm中快捷安装pip命令(如pygame)
2021/05/31 Python
详细聊聊浏览器是如何看闭包的
2021/11/11 Javascript
使用Redis做预定库存缓存功能
2022/04/02 Redis