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 相关文章推荐
javascript实现二分查找法实现代码
Nov 12 Javascript
让mayfish支持mysqli数据库驱动的实现方法
May 22 Javascript
关于js数组去重的问题小结
Jan 24 Javascript
javascript页面加载完执行事件代码
Feb 11 Javascript
js创建表单元素并使用submit进行提交
Aug 14 Javascript
JavaScript验证电子邮箱的函数
Aug 22 Javascript
javascript实现回车键提交表单方法总结
Jan 10 Javascript
浅谈vue-router2路由参数注意的问题
Nov 08 Javascript
mpvue写一个CPASS小程序的示例
Sep 04 Javascript
bootstrap自定义样式之bootstrap实现侧边导航栏功能
Sep 10 Javascript
JavaScript实现图片伪异步上传过程解析
Apr 10 Javascript
NestJs使用Mongoose对MongoDB操作的方法
Feb 22 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
虫族 Zerg 热键控制
2020/03/14 星际争霸
PHP取进制余数函数代码
2012/01/19 PHP
php图片加中文水印实现代码分享
2012/10/31 PHP
简单的php中文转拼音的实现代码
2014/02/11 PHP
PHP连接MYSQL数据库实例代码
2016/01/20 PHP
新浪中用来显示flash的函数
2007/04/02 Javascript
在一个js文件里远程调用jquery.js会在ie8下的一个奇怪问题
2010/11/28 Javascript
网页整体变灰白色(兼容各浏览器)实例
2013/04/21 Javascript
jQuery实现动画效果的实例代码
2013/05/07 Javascript
js 实现日期灵活格式化的小例子
2013/07/14 Javascript
PHP+jQuery实现随意拖动层并即时保存拖动位置
2015/04/30 Javascript
jQuery获取checkboxlist的value值的方法
2015/09/27 Javascript
向JavaScript的数组中添加元素的方法小结
2015/10/24 Javascript
分享有关jQuery中animate、slide、fade等动画的连续触发、滞后反复执行的bug
2016/01/10 Javascript
微信小程序 框架详解及实例应用
2016/09/26 Javascript
详解Vue路由History mode模式中页面无法渲染的原因及解决
2017/09/28 Javascript
解决JQuery全选/反选第二次失效的问题
2017/10/11 jQuery
在Layui中操作数据表格,给指定单元格添加事件示例
2019/10/26 Javascript
微信小程序获取当前时间及星期几的实例代码
2020/09/20 Javascript
python with statement 进行文件操作指南
2014/08/22 Python
python爬虫入门教程--HTML文本的解析库BeautifulSoup(四)
2017/05/25 Python
Python中应该使用%还是format来格式化字符串
2018/09/25 Python
python处理“
2019/06/10 Python
pandas中遍历dataframe的每一个元素的实现
2019/10/23 Python
Python Tkinter模块 GUI 可视化实例
2019/11/20 Python
Python-opencv实现红绿两色识别操作
2020/06/04 Python
Django ORM判断查询结果是否为空,判断django中的orm为空实例
2020/07/09 Python
学python爬虫能做什么
2020/07/29 Python
教你如何一步一步用Canvas写一个贪吃蛇
2018/10/22 HTML / CSS
FORZIERI澳大利亚站:全球顶级奢华配饰精品店
2016/12/31 全球购物
纽约复古灵感的现代珠宝品牌:Lulu Frost
2018/03/03 全球购物
Vans(范斯)新西兰官方网站:美国原创极限运动品牌
2020/09/19 全球购物
2014年公司工作总结
2014/11/22 职场文书
少年犯观后感
2015/06/11 职场文书
工商行政处罚决定书
2015/06/24 职场文书
《莫泊桑拜师》教学反思
2016/02/22 职场文书