Vue 重置组件到初始状态的方法示例


Posted in Javascript onOctober 10, 2018

Vue

通过直接强制刷新 DOM 来达到重置组件的效果,这样可以重置一些组件的动画以及组件内初始的数据

强制重新生成 DOM 的实现

原理:强制重新生成 DOM 可以通过 Vue 中的 key 来实现。在 Vue 更新 Dom 时,如果 key 值相同则会对原有组件进行复用,如果不同,则会重新生成。

代码示例:

每次点击 refresh 按钮,Demo 组件都会重新生成

组件:

/**
 * Demo.vue
 */
<template>
 <div>Demo</div>
</template>
<script>
 export default {
  data () {
   return {}
  },
  created: function () {
   console.log('created')
  }
 }
</script>

主页面:

/**
 * Index.vue
 */
<template>
 <div>
 <Demo :key="id"></Demo>
 <button @click="refresh">refresh</button>
 </div>
</template>
<script>
 import Demo from './Demo'
 export default {
  data () {
   return {
    id: +new Date()
   }
  },
  methods: {
    refresh: function () {
    this.id = +new Date()
   }
  },
  components: {
   Demo
  }
 }
</script>

注:

对 +new Date() 的说明:
4 个结果一样,都是返回当前时间的毫秒数
alert(+new Date())
alert(+new Date)
var a=new Date()
alert(a.valueOf())
alert(a.getTime())

补充:vue强制刷新组件

把一个组件重置到初始状态是一个常见的需求,推荐的做法有两种,一种是父组件重置子组件的 prop,另一种是子组件暴露一个重置的方法供父组件调用。但有些时候,子组件既没有提供重置的方法,也没提供 prop 来重置自己的状态。更重要的是,这个子组件我们还动不了。于是我们就需要一种 hack 的方式来强制子组件重置到初始状态。方法如下:

<component v-if="hackReset"></component>

this.hackReset = false
this.$nextTick(() => {
this.hackReset = true
})

v-if 在切换时,元素及它的绑定数据和组件都会被销毁并重建

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery移动节点实例
Jan 14 Javascript
JavaScript获取页面中第一个锚定文本的方法
Apr 03 Javascript
JSON 必知必会 观后记
Oct 27 Javascript
JS闭包与延迟求值用法示例
Dec 22 Javascript
微信小程序 picker-view 组件详解及简单实例
Jan 10 Javascript
基于Vue实现页面切换左右滑动效果
Jun 29 Javascript
快速了解vue-cli 3.0 新特性
Feb 28 Javascript
vue-cli监听组件加载完成的方法
Sep 07 Javascript
小程序scroll-view组件实现滚动的示例代码
Sep 20 Javascript
angular中两种表单的区别(响应式和模板驱动表单)
Dec 06 Javascript
使用react context 实现vue插槽slot功能
Jul 18 Javascript
JS实现网页烟花动画效果
Mar 10 Javascript
15个顶级开源JavaScript框架和库
Oct 10 #Javascript
使用Angular 6创建各种动画效果的方法
Oct 10 #Javascript
js 实现在2d平面上画8的方法
Oct 10 #Javascript
从零开始用electron手撸一个截屏工具的示例代码
Oct 10 #Javascript
js正则取值的结果数组调试方法
Oct 10 #Javascript
webpack dll打包重复问题优化的解决
Oct 10 #Javascript
4个顶级JavaScript高级文本编辑器
Oct 10 #Javascript
You might like
PHP数组 为文章加关键字连接 文章内容自动加链接
2011/12/29 PHP
Javascript异步表单提交,图片上传,兼容异步模拟ajax技术
2010/05/10 Javascript
限制文本框输入N个字符的js代码
2010/05/13 Javascript
通过jQuery打造支持汉字,拼音,英文快速定位查询的超级select插件
2010/06/18 Javascript
自己写了一个展开和收起的多更能型的js效果
2013/03/05 Javascript
js中的屏蔽的使用示例
2013/07/30 Javascript
JS将秒换成时分秒实现代码
2013/09/03 Javascript
微信小程序倒计时功能实例代码
2018/07/17 Javascript
微信自定义分享链接信息(标题,图片和内容)实现过程详解
2019/09/04 Javascript
Vue3.x源码调试的实现方法
2019/10/13 Javascript
npm qs模块使用详解
2020/02/07 Javascript
[01:36:19]Secret vs NB 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
用Python实现一个简单的能够发送带附件的邮件程序的教程
2015/04/08 Python
简单讲解Python中的闭包
2015/08/11 Python
Python表示矩阵的方法分析
2017/05/26 Python
Python构建图像分类识别器的方法
2019/01/12 Python
对python中list的拷贝与numpy的array的拷贝详解
2019/01/29 Python
python pygame实现方向键控制小球
2019/05/17 Python
Python with关键字,上下文管理器,@contextmanager文件操作示例
2019/10/17 Python
Python Web静态服务器非堵塞模式实现方法示例
2019/11/21 Python
Python注释、分支结构、循环结构、伪“选择结构”用法实例分析
2020/01/09 Python
Python如何脚本过滤文件中的注释
2020/05/27 Python
python如何导入依赖包
2020/07/13 Python
Python Opencv图像处理基本操作代码详解
2020/08/31 Python
详解python中的异常捕获
2020/12/15 Python
python 使用openpyxl读取excel数据
2021/02/18 Python
HTML5页面无缝闪开的问题及解决方案
2020/06/11 HTML / CSS
美国美发品牌:Bumble and Bumble
2016/10/08 全球购物
阿玛尼化妆品美国官网:Giorgio Armani Beauty
2017/02/02 全球购物
世界首屈一指的在线男士内衣权威:HisRoom
2017/08/05 全球购物
星空联盟C# .net笔试题
2014/12/05 面试题
编辑找工作求职信分享
2014/01/03 职场文书
预防煤气中毒方案
2014/06/16 职场文书
优秀会计求职信
2014/07/04 职场文书
小学中等生评语
2014/12/29 职场文书
预备党员群众意见
2015/06/01 职场文书