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 相关文章推荐
Google韩国首页图标动画效果
Aug 26 Javascript
浅谈jQuery异步对象(XMLHttpRequest)
Nov 17 Javascript
再谈JavaScript异步编程
Jan 27 Javascript
常用的JQuery函数及功能小结
Mar 24 Javascript
jQuery的文档处理程序详解
May 10 Javascript
使用jQuery制作遮罩层弹出效果的极简实例分享
May 12 Javascript
简单理解vue中track-by属性
Oct 26 Javascript
基于easyui checkbox 的一些操作处理方法
Jul 10 Javascript
jQuery实现可兼容IE6的滚动监听功能
Sep 20 jQuery
javaScript实现鼠标在文字上悬浮时弹出悬浮层效果
Apr 12 Javascript
解决LayUI表单获取不到data的问题
Aug 20 Javascript
利用vue.js把静态json绑定bootstrap的table方法
Aug 28 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+ajax实现无刷新文件上传功能(ajaxuploadfile)
2018/02/11 PHP
PHP从零开始打造自己的MVC框架之路由类实现方法分析
2019/06/03 PHP
SyntaxHighlighter代码加色使用方法
2008/09/07 Javascript
javascript学习基础笔记之DOM对象操作
2011/11/03 Javascript
js 链式延迟执行DOME
2012/01/04 Javascript
使用jQuery设置disabled属性与移除disabled属性
2014/08/21 Javascript
JavaScript中的无阻塞加载性能优化方案
2014/10/10 Javascript
Javascript与jQuery方法的隐藏与显示
2015/01/19 Javascript
一看就懂:jsonp详解
2015/06/01 Javascript
jQuery解析Json实例详解
2015/11/24 Javascript
详解AngularJS实现表单验证
2015/12/10 Javascript
jQuery EasyUI datagrid在翻页以后仍能记录被选中行的实现代码
2016/08/15 Javascript
js学习笔记之事件处理模型
2016/10/31 Javascript
JS插件plupload.js实现多图上传并显示进度条
2016/11/29 Javascript
JavaScript使用delete删除数组元素用法示例【数组长度不变】
2017/01/17 Javascript
Angular实现响应式表单
2017/08/04 Javascript
详解react关于事件绑定this的四种方式
2018/03/09 Javascript
Vue中的Props(不可变状态)
2018/09/29 Javascript
vue2之简易的pc端短信验证码的问题及处理方法
2019/06/03 Javascript
Node.JS用纯JavaScript生成图片或滑块式验证码功能
2019/09/12 Javascript
JS快速实现简单计算器
2020/04/08 Javascript
[53:03]Optic vs TNC 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
Python遍历目录并批量更换文件名和目录名的方法
2016/09/19 Python
你应该知道的python列表去重方法
2017/01/17 Python
python使用xlrd与xlwt对excel的读写和格式设定
2017/01/21 Python
Python多线程原理与用法详解
2018/08/20 Python
浅谈python中str字符串和unicode对象字符串的拼接问题
2018/12/04 Python
Python3多目标赋值及共享引用注意事项
2019/05/27 Python
python判断单向链表是否包括环,若包含则计算环入口的节点实例分析
2019/10/23 Python
Python求平面内点到直线距离的实现
2020/01/19 Python
基于css3仿造window7的开始菜单
2010/06/17 HTML / CSS
HTML5中使用json对象的实例代码
2018/09/10 HTML / CSS
党建工作先进材料
2014/05/02 职场文书
廉政党课工作报告案例
2019/06/21 职场文书
婚礼必备主持词范本!
2019/07/23 职场文书
vue @click.native 绑定原生点击事件
2022/04/22 Vue.js