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 相关文章推荐
jquery下jstree简单应用 - v1.0
Apr 14 Javascript
jquery 缓存问题的几个解决方法
Nov 11 Javascript
JQuery控制div外点击隐藏而div内点击不会隐藏的方法
Jan 13 Javascript
jQuery搜索同辈元素方法
Feb 10 Javascript
JS选取DOM元素的简单方法
Jul 08 Javascript
详解js前端代码异常监控
Jan 11 Javascript
js实现弹窗暗层效果
Jan 16 Javascript
javascript高级模块化require.js的具体使用方法
Oct 31 Javascript
Vue中使用ElementUI使用第三方图标库iconfont的示例
Oct 11 Javascript
vue实现下拉加载其实没那么复杂
Aug 13 Javascript
Vue computed 计算属性代码实例
Apr 22 Javascript
ES6对象操作实例详解
May 23 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的ob_start来生成静态页面的方法分析
2011/03/09 PHP
PHP面试题之文件目录操作
2015/10/15 PHP
thinkphp5 + ajax 使用formdata提交数据(包括文件上传) 后台返回json完整实例
2020/03/02 PHP
鼠标移动到一张图片时变为另一张图片
2006/12/05 Javascript
javascript中的107个基础知识收集整理 推荐
2010/03/29 Javascript
从零开始学习jQuery (三) 管理jQuery包装集
2011/02/23 Javascript
js中判断用户输入的值是否为空的简单实例
2013/12/23 Javascript
jQuery实现滚动切换的tab选项卡效果代码
2015/08/26 Javascript
JavaScript实现审核流程状态的动态显示进度条
2017/03/15 Javascript
浅谈通过JS拦截 pushState和replaceState事件
2017/07/21 Javascript
javascript观察者模式实现自动刷新效果
2017/09/05 Javascript
HTML5开发Kinect体感游戏的实例应用
2017/09/18 Javascript
ajax请求+vue.js渲染+页面加载的示例
2018/02/11 Javascript
脚手架vue-cli工程webpack的基本用法详解
2018/09/29 Javascript
基于JavaScript canvas绘制贝塞尔曲线
2018/12/25 Javascript
Vue源码学习之关于对Array的数据侦听实现
2019/04/23 Javascript
Element中Slider滑块的具体使用
2020/07/29 Javascript
js实现扫雷源代码
2020/11/27 Javascript
[32:36]完美世界DOTA2联赛PWL S3 LBZS vs CPG 第二场 12.12
2020/12/16 DOTA
Python跳出循环语句continue与break的区别
2014/08/25 Python
在Python中操作字符串之replace()方法的使用
2015/05/19 Python
Python读写unicode文件的方法
2015/07/10 Python
使用Python简单的实现树莓派的WEB控制
2016/02/18 Python
使用rst2pdf实现将sphinx生成PDF
2016/06/07 Python
python制作英语翻译小工具代码实例
2019/09/09 Python
python 导入数据及作图的实现
2019/12/03 Python
Tensorflow 使用pb文件保存(恢复)模型计算图和参数实例详解
2020/02/11 Python
Python __slots__的使用方法
2020/11/15 Python
乐观大学生的自我评价
2014/01/10 职场文书
新年晚会主持词
2014/03/24 职场文书
孝敬父母的演讲稿
2014/05/14 职场文书
企业爱岗敬业演讲稿
2014/09/04 职场文书
个人租房协议书样本
2014/10/01 职场文书
2015年世界无烟日活动总结
2015/02/10 职场文书
中学生清明节演讲稿
2015/03/18 职场文书
2015教师节师德演讲稿
2015/03/19 职场文书