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之一
Apr 27 Javascript
javascript+xml技术实现分页浏览
Jul 27 Javascript
jQuery一步一步实现跨浏览器的可编辑表格,支持IE、Firefox、Safari、Chrome、Opera
Aug 28 Javascript
JavaScript 基础知识 被自己遗忘的
Oct 15 Javascript
Jquery公告滚动+AJAX后台得到数据
Apr 14 Javascript
Angular和百度地图的结合实例代码
Oct 19 Javascript
微信公众号-获取用户信息(网页授权获取)实现步骤
Oct 21 Javascript
JS/jQuery判断DOM节点是否存在的简单方法
Nov 24 Javascript
JS判断数组那点事
Oct 10 Javascript
详解用Node.js写一个简单的命令行工具
Mar 01 Javascript
vue实现手机号码的校验实例代码(防抖函数的应用场景)
Sep 05 Javascript
Js逆向实现滑动验证码图片还原的示例代码
Mar 10 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+mysql 实现身份验证代码
2010/03/24 PHP
如何获知PHP程序占用多少内存(memory_get_usage)
2012/09/23 PHP
php_screw 1.5:php加密: 安装与使用详解
2013/06/20 PHP
解析php session_set_save_handler 函数的用法(mysql)
2013/06/29 PHP
php查询ip所在地的方法
2014/12/05 PHP
thinkphp3.2实现在线留言提交验证码功能
2017/07/19 PHP
PHP模型Model类封装数据库操作示例
2019/03/14 PHP
js 鼠标点击事件及其它捕获
2009/06/04 Javascript
JQuery跨Iframe选择实现代码
2010/08/19 Javascript
JS弹出层单纯的绝对定位居中示例代码
2014/02/18 Javascript
DOM基础教程之模型中的模型节点
2015/01/19 Javascript
基于jquery实现图片上传本地预览功能
2016/01/08 Javascript
jquery编写Tab选项卡滚动导航切换特效
2020/07/17 Javascript
js实现div在页面拖动效果
2016/05/04 Javascript
jQuery 实现评论等级好评差评特效
2016/05/06 Javascript
vue实现一个移动端屏蔽滑动的遮罩层实例
2017/06/08 Javascript
JS 设置Cookie 有效期 检测cookie
2017/06/15 Javascript
Vue-Router实现组件间跳转的三种方法
2017/11/07 Javascript
尝试自己动手用react来写一个分页组件(小结)
2018/02/09 Javascript
详解在React-Native中持久化redux数据
2019/05/22 Javascript
vue.js 实现a标签href里添加参数
2019/11/12 Javascript
vue项目实现图片上传功能
2019/12/23 Javascript
在vue-cli创建的项目中使用sass操作
2020/08/10 Javascript
Python完全新手教程
2007/02/08 Python
python将一组数分成每3个一组的实例
2018/11/14 Python
Python3使用Selenium获取session和token方法详解
2021/02/16 Python
前端水印的简单实现代码示例
2020/12/02 HTML / CSS
德国2018年度最佳在线药房:Bodfeld Apotheke
2019/11/04 全球购物
六十大寿答谢词
2014/01/12 职场文书
在校硕士自我鉴定
2014/01/23 职场文书
党的群众路线教育实践活动宣传方案
2014/02/23 职场文书
经典婚礼主持开场白
2014/03/13 职场文书
Java Lambda表达式常用的函数式接口
2022/04/07 Java/Android
MySQL创建管理RANGE分区
2022/04/13 MySQL
收音机爱好者玩机13年,简评其使用过的19台收音机
2022/04/30 无线电
win10识别不了U盘怎么办 win10系统读取U盘失败的解决办法
2022/08/05 数码科技