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 相关文章推荐
js 巧妙去除数组中的重复项
Jan 25 Javascript
jQuery Select(单选) 模拟插件 V1.3.62 改进版
Jul 17 Javascript
一个Action如何调用两个不同的方法
May 22 Javascript
jquery限定文本框只能输入数字(整数和小数)
Jan 08 Javascript
3kb jQuery代码搞定各种树形选择的实现方法
Jun 10 Javascript
JS中使用mailto实现将用户在网页中输入的内容传递到本地邮件客户端
Oct 08 Javascript
把json格式的字符串转换成javascript对象或数组的方法总结
Nov 03 Javascript
Vue.js仿Metronic高级表格(二)数据渲染
Apr 19 Javascript
Mac系统下Webstorm快捷键整理大全
May 28 Javascript
利用canvas实现的加载动画效果实例代码
Jul 05 Javascript
JS常见DOM节点操作示例【创建 ,插入,删除,复制,查找】
May 14 Javascript
react脚手架如何配置less和ant按需加载的方法步骤
Nov 28 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
Zend framework处理一个http请求的流程分析
2010/02/08 PHP
解析isset与is_null的区别
2013/08/09 PHP
php中file_get_content 和curl以及fopen 效率分析
2014/09/19 PHP
详解PHP的Yii框架中组件行为的属性注入和方法注入
2016/03/18 PHP
如何使用php等比例缩放图片
2016/10/12 PHP
php中类和对象:静态属性、静态方法
2017/04/09 PHP
JavaScript中函数声明优先于变量声明的实例分析
2012/03/01 Javascript
使用JS实现jQuery的addClass, removeClass, hasClass函数功能
2014/10/31 Javascript
JS自定义选项卡函数及用法实例分析
2015/09/02 Javascript
jQuery实现仿QQ头像闪烁效果的文字闪动提示代码
2015/11/03 Javascript
深入理解node.js之path模块
2017/05/03 Javascript
详解JavaScript调用栈、尾递归和手动优化
2017/06/03 Javascript
react-navigation 如何判断用户是否登录跳转到登录页的方法
2017/12/01 Javascript
详解使用 Node.js 开发简单的脚手架工具
2018/06/08 Javascript
详解Vue CLI 3.0脚手架如何mock数据
2018/11/23 Javascript
浅析Vue中拆分视图层代码的5点建议
2019/08/15 Javascript
nuxt+axios实现打包后动态修改请求地址的方法
2020/04/22 Javascript
JS图片预加载三种实现方法解析
2020/05/08 Javascript
浅谈JavaScript中的“!!”作用
2020/08/03 Javascript
vue自定义指令和动态路由实现权限控制
2020/08/28 Javascript
vue 项目中当访问路由不存在的时候默认访问404页面操作
2020/08/31 Javascript
python动态性强类型用法实例
2015/05/09 Python
使用Python对Csv文件操作实例代码
2017/05/12 Python
python文件拆分与重组实例
2018/12/10 Python
解决python写入带有中文的字符到文件错误的问题
2019/01/31 Python
python 浅谈serial与stm32通信的编码问题
2019/12/18 Python
使用css3制作动感导航条示例
2014/01/26 HTML / CSS
HTML5 localStorage使用总结
2017/02/22 HTML / CSS
医学生职业生涯规划书范文
2014/03/13 职场文书
协议书的格式
2014/04/23 职场文书
化妆品活动策划方案
2014/05/23 职场文书
蛋糕店创业计划书范文
2014/09/21 职场文书
2015年社区计生工作总结
2015/04/21 职场文书
2015年度电厂个人工作总结
2015/05/13 职场文书
Python合并多张图片成PDF
2021/06/09 Python
浅谈redis整数集为什么不能降级
2021/07/25 Redis