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 相关文章推荐
ASP.NET jQuery 实例12 通过使用jQuery validation插件简单实现用户注册页面验证功能
Feb 03 Javascript
jquery向上向下取整适合分页查询
Sep 06 Javascript
node.js中的fs.lchownSync方法使用说明
Dec 16 Javascript
jQuery中siblings()方法用法实例
Jan 08 Javascript
javascript日期验证之输入日期大于等于当前日期
Dec 13 Javascript
JS中setTimeout和setInterval的最大延时值详解
Feb 13 Javascript
Angular 4依赖注入学习教程之ClassProvider的使用(三)
Jun 04 Javascript
Angular 4依赖注入学习教程之Injectable装饰器(六)
Jun 04 Javascript
从理论角度讨论JavaScript闭包
Apr 03 Javascript
解决微信小程序云开发中获取数据库的内容为空的方法
May 15 Javascript
vue keep-alive列表页缓存 详情页返回上一页不刷新,定位到之前位置
Nov 26 Javascript
VSCode搭建React Native环境
May 07 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
NO3第三帝国留言簿制作过程
2006/10/09 PHP
PHP中for循环语句的几种变型
2006/11/26 PHP
php中批量删除Mysql中相同前缀的数据表的代码
2011/07/01 PHP
php实现计算百度地图坐标之间距离的方法
2016/05/05 PHP
PHP实现非阻塞模式的方法分析
2018/07/26 PHP
xmlHTTP实例
2006/10/24 Javascript
Jquery为单选框checkbox绑定单击click事件
2012/12/18 Javascript
js css后面所带参数含义介绍
2013/08/18 Javascript
Jquery 动态循环输出表格具体方法
2013/11/23 Javascript
node.js中的fs.appendFile方法使用说明
2014/12/17 Javascript
AngularJS实现动态编译添加到dom中的方法
2016/11/04 Javascript
原生javascript实现图片放大镜效果
2017/01/18 Javascript
浅谈Javascript事件对象
2017/02/05 Javascript
Angular 1.x个人使用的经验小结
2017/07/19 Javascript
JavaScript中各数制转换全面总结
2017/08/21 Javascript
jQuery选择器选中最后一个元素,倒数第二个元素操作示例
2018/12/10 jQuery
jQuery实现的老虎机跑动效果示例
2018/12/29 jQuery
使用form-create动态生成vue自定义组件和嵌套表单组件
2019/01/18 Javascript
vue.js的状态管理vuex中store的使用详解
2019/11/08 Javascript
JS模拟实现京东快递单号查询
2020/11/30 Javascript
Python之Web框架Django项目搭建全过程
2017/05/02 Python
利用Python如何批量修改数据库执行Sql文件
2018/07/29 Python
简单了解python PEP的一些知识
2019/07/13 Python
python求前n个阶乘的和实例
2020/04/02 Python
Python 列表中的修改、添加和删除元素的实现
2020/06/11 Python
CSS3中Transition动画属性用法详解
2016/07/04 HTML / CSS
SOA的常见陷阱或者误解是什么
2014/10/05 面试题
前台文员职责范本
2014/03/07 职场文书
我的长生果教学反思
2014/04/28 职场文书
建筑安全标语
2014/06/07 职场文书
4s店活动策划方案
2014/08/25 职场文书
党员个人对照检查材料
2014/10/01 职场文书
杜甫草堂导游词
2015/02/03 职场文书
话题作文之自信作文
2019/11/15 职场文书
再也不用花钱买漫画!Python爬取某漫画的脚本及源码
2021/06/09 Python
浅谈Redis的事件驱动模型
2022/05/30 Redis