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的类型简单说明
Sep 03 Javascript
Jquery下:nth-child(an+b)的使用注意
May 28 Javascript
Javascript表格翻页效果实现思路及代码
Aug 23 Javascript
js 采用delete实现继承示例代码
May 20 Javascript
利用JavaScript阻止表单提交的两种方法
Aug 11 Javascript
js 输入框 正则表达式(菜鸟必看教程)
Feb 19 Javascript
浅析JS中的 map, filter, some, every, forEach, for in, for of 用法总结
Mar 29 Javascript
Vue.js实现微信过渡动画左右切换效果
Jun 13 Javascript
js使用Promise实现简单的Ajax缓存
Nov 14 Javascript
Vue 动态添加路由及生成菜单的方法示例
Jun 20 Javascript
Vue3项目打包后部署到服务器 请求不到后台接口解决方法
Feb 06 Javascript
微信小程序利用for循环解决内容变更问题
Mar 05 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实现把文本中的URL转换为链接的auolink()函数分享
2014/07/29 PHP
为你总结一些php系统类函数
2015/10/21 PHP
深入理解PHP变量的值类型和引用类型
2015/10/21 PHP
在php7中MongoDB实现模糊查询的方法详解
2017/05/03 PHP
php检查函数必传参数是否存在的实例详解
2017/08/28 PHP
jsTree 基于JQuery的排序节点 Bug
2011/07/26 Javascript
firebug的一个有趣现象介绍
2011/11/30 Javascript
ie6下png图片背景不透明的解决办法使用js实现
2013/01/11 Javascript
左侧是表头的JS表格控件(自写,网上没有的)
2013/06/04 Javascript
JS小功能(onmouseover实现选择月份)实例代码
2013/11/28 Javascript
鼠标选择动态改变网页背景颜色的JS代码
2013/12/10 Javascript
两种JavaScript的AES加密方式(可与Java相互加解密)
2016/08/02 Javascript
Bootstrap Table从服务器加载数据进行显示的实现方法
2016/09/29 Javascript
利用策略模式与装饰模式扩展JavaScript表单验证功能
2017/02/14 Javascript
ECMAScript6 新特性范例大全
2017/03/24 Javascript
基于vue.js实现的分页
2018/03/13 Javascript
解决IE11 vue +webpack 项目中数据更新后页面没有刷新的问题
2018/09/25 Javascript
JS实现页面数据懒加载
2020/02/13 Javascript
使用AutoJs实现微信抢红包的代码
2020/12/31 Javascript
[01:00]DOTA2 store: Collection of Artisan's Wonders
2015/08/12 DOTA
使用Python脚本将绝对url替换为相对url的教程
2015/04/24 Python
浅谈python中截取字符函数strip,lstrip,rstrip
2015/07/17 Python
Python计算已经过去多少个周末的方法
2015/07/25 Python
Python基于csv模块实现读取与写入csv数据的方法
2018/01/18 Python
python实现数据导出到excel的示例--普通格式
2018/05/03 Python
python爬虫神器Pyppeteer入门及使用
2019/07/13 Python
django实现模板中的字符串文字和自动转义
2020/03/31 Python
Python安装第三方库攻略(pip和Anaconda)
2020/10/15 Python
HTML5通过调用canvas对象的getContext()方法来获取绘图环境
2014/06/23 HTML / CSS
Dr. Martens马汀博士官网:马丁靴始祖品牌
2016/10/15 全球购物
机电一体化大学生求职信
2013/11/08 职场文书
二手车交易协议书标准版
2014/11/16 职场文书
团代会邀请函
2015/02/02 职场文书
企业反腐倡廉心得体会
2015/08/15 职场文书
利用python进行数据加载
2021/06/20 Python
MySQL的存储过程和相关函数
2022/04/26 MySQL