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 相关文章推荐
IE6/7/8/9不支持exec的简写方式
May 25 Javascript
javascript写的简单的计算器,内容很多,方法实用,推荐
Dec 29 Javascript
基于javascript实现漂亮的页面过渡动画效果附源码下载
Oct 26 Javascript
深入浅析JSON.parse()、JSON.stringify()和eval()的作用详解
Apr 03 Javascript
D3.js实现折线图的方法详解
Sep 21 Javascript
JS获取浮动(float)元素的style.left值为空的快速解决办法
Feb 19 Javascript
Angular2数据绑定详解
Apr 18 Javascript
ES6深入理解之“let”能替代”var“吗?
Jun 28 Javascript
Vue按需加载的具体实现
Dec 02 Javascript
vue源码学习之Object.defineProperty 对数组监听
May 30 Javascript
小程序实现列表删除功能
Oct 30 Javascript
微信小程序实现天气预报功能(附源码)
Dec 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/05/09 PHP
PHP图片库imagemagick安装方法
2014/09/23 PHP
php将文本文件转换csv输出的方法
2014/12/31 PHP
php实现微信支付之退款功能
2018/05/30 PHP
不懂JavaScript应该怎样学
2008/04/16 Javascript
Javascript图像处理思路及实现代码
2012/12/25 Javascript
javascript图像处理—仿射变换深度理解
2013/01/16 Javascript
JavaScript中window、doucment、body的解释
2013/08/14 Javascript
js中对象的声明方式以及数组的一些用法示例
2013/12/11 Javascript
JavaScript组件焦点与页内锚点间传值的方法
2015/02/02 Javascript
jquery实现仿Flash的横向滑动菜单效果代码
2015/09/17 Javascript
分离与继承的思想实现图片上传后的预览功能:ImageUploadView
2016/04/07 Javascript
javascript实现简单计算器效果【推荐】
2016/04/19 Javascript
javascript 开发之百度地图使用到的js函数整理
2017/05/19 Javascript
JS实现模糊查询带下拉匹配效果
2018/06/21 Javascript
[01:11]回顾历届DOTA2国际邀请赛中国区预选赛
2017/06/26 DOTA
[01:09:23]KG vs TNC 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
python获取豆瓣电影简介代码分享
2014/01/16 Python
Python global全局变量函数详解
2018/09/18 Python
python实现狄克斯特拉算法
2019/01/17 Python
Django模板标签中url使用详解(url跳转到指定页面)
2020/03/19 Python
Python同时迭代多个序列的方法
2020/07/28 Python
使用CSS3代码绘制可爱的Hello Kitty猫
2016/08/03 HTML / CSS
HTML5 新标签全部总汇(推荐)
2016/06/13 HTML / CSS
美德好少年主要事迹
2014/01/29 职场文书
视光学毕业生自荐书范文
2014/02/13 职场文书
《桃花心木》教学反思
2014/02/17 职场文书
评析教师个人的自我评价
2014/02/19 职场文书
临床护理求职信
2014/04/26 职场文书
公务员诚信承诺书
2014/05/26 职场文书
药剂专业自荐书
2014/06/20 职场文书
群众路线个人整改措施
2014/10/24 职场文书
工伤私了协议书范本
2014/11/24 职场文书
财务人员个人工作总结
2015/02/27 职场文书
公司酒会致辞
2015/07/30 职场文书
Python数据可视化之Seaborn的安装及使用
2022/04/19 Python