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 相关文章推荐
Extjs学习笔记之五 一个小细节renderTo和applyTo的区别
Jan 07 Javascript
用jquery模仿的a的title属性的例子
Oct 22 Javascript
JSP防止网页刷新重复提交数据的几种方法
Nov 19 Javascript
基于iscroll.js实现下拉刷新和上拉加载效果
Nov 28 Javascript
微信小程序进行微信支付的步骤昂述
Dec 01 Javascript
javascript实现复选框全选或反选
Feb 04 Javascript
JS仿QQ好友列表展开、收缩功能(第二篇)
Jul 07 Javascript
vue获取DOM元素并设置属性的两种实现方法
Sep 30 Javascript
Vue v2.5 调整和更新不完全问题
Oct 24 Javascript
浅谈ng-zorro使用心得
Dec 03 Javascript
详解vue配置后台接口方式
Mar 29 Javascript
node 版本切换的实现
Feb 02 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.ini中date.timezone设置分析
2011/07/29 PHP
php抽象类使用要点与注意事项分析
2015/02/09 PHP
mac下多个php版本快速切换的方法
2016/10/09 PHP
javascript取消文本选定的实现代码
2010/11/14 Javascript
IE和Firefox的Javascript兼容性总结[推荐收藏]
2011/10/19 Javascript
javascript中call和apply方法浅谈
2013/09/27 Javascript
JavaScript新窗口与子窗口传值详解
2014/02/11 Javascript
js时间日期格式化封装函数
2014/12/02 Javascript
使用js画图之饼图
2015/01/12 Javascript
JavaScript面向对象的实现方法小结
2015/04/14 Javascript
Jquery ajax请求导出Excel表格的实现代码
2016/06/08 Javascript
JavaScript职责链模式概述
2016/09/17 Javascript
微信小程序 wx.request(object) API详解及实例代码
2016/09/30 Javascript
Vue.js -- 过滤器使用总结
2017/02/18 Javascript
jquery自定义显示消息数量
2017/12/19 jQuery
vue+vuex+axios实现登录、注册页权限拦截
2018/03/09 Javascript
对Vue beforeRouteEnter 的next执行时机详解
2018/08/25 Javascript
解决vuejs 使用value in list 循环遍历数组出现警告的问题
2018/09/26 Javascript
Vue 2.0 侦听器 watch属性代码详解
2019/06/19 Javascript
vue脚手架项目创建步骤详解
2021/03/02 Vue.js
[54:56]DOTA2上海特级锦标赛主赛事日 - 5 总决赛Liquid VS Secret第三局
2016/03/06 DOTA
Python实现的文本简单可逆加密算法示例
2017/05/18 Python
python 实现将字典dict、列表list中的中文正常显示方法
2018/07/06 Python
python直接获取API传递回来的参数方法
2018/12/17 Python
pytorch实现seq2seq时对loss进行mask的方式
2020/02/18 Python
小白教你PyCharm从下载到安装再到科学使用PyCharm2020最新激活码
2020/09/25 Python
皇家阿尔伯特瓷器美国官网:Royal Albert美国
2020/02/16 全球购物
高中生操行评语大全
2014/04/25 职场文书
四风剖析查摆对照检查材料思想汇报
2014/09/24 职场文书
农村党支部书记司法四风问题对照检查材料
2014/09/26 职场文书
2014年惩防体系建设工作总结
2014/12/01 职场文书
行政撤诉申请书
2015/05/18 职场文书
小学家庭教育心得体会
2016/01/14 职场文书
python之np.argmax()及对axis=0或者1的理解
2021/06/02 Python
关于Python使用turtle库画任意图的问题
2022/04/01 Python
vue实现input输入模糊查询的三种方式
2022/08/14 Vue.js