美文网首页
Vue杂记之强制重新生成DOM

Vue杂记之强制重新生成DOM

作者: wuww | 来源:发表于2017-04-23 11:08 被阅读3380次

对于一个vue组件,如果我们想要吧它重置到最初始的状态,一般只需要将组件内部的数据进行重置即可。但是在某些情况下,这种方法并不适用。比如

  • 组件在初始化时并不会触发watch选项中的函数,而将数据进行重置时则会触发。如果我们想要将数据进行重置却不想执行watch中的函数则会考虑重新生成DOM。
  • 如果我们直接对DOM进行了修改而不是通过修改数据更新DOM。
  • 如果我们使用了CSS中的transition属性实现过度动画。比如已经完成了opacity:0opacity:1的过度效果。现在想将CSS重置为opacity:0却不想出现动画效果。

强制重新生成DOM的实现

强制重新生成DOM可以通过vue中key来实现。在vue更新DOM时,如果key值相同则会对原有组件进行复用,如果不同,则会重新生成。

代码示例:

/**
 * 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>

每次点击refresh按钮,Demo组件都会重新生成

相关文章

  • Vue杂记之强制重新生成DOM

    对于一个vue组件,如果我们想要吧它重置到最初始的状态,一般只需要将组件内部的数据进行重置即可。但是在某些情况下,...

  • vue的虚拟dom

    为什么用vue 1.操作dom元素需要把html结构销毁之后,然后再进行重新生成,十分消耗性能 2.虚拟dom,通...

  • vue强制刷新dom

    https://www.cnblogs.com/perferect/p/13073973.html[https:/...

  • 虚拟dom

    vue执行 先去创建一个虚拟dom, 将生成的虚拟dom其渲染到页面。 虚拟dom是一个对象,能够表现出dom结构...

  • 前端面试常见问题三:angular和vue的比较

    1.各自的优缺点2.应用场景3.各自的双向数据绑定原理4.vue虚拟dom:利用在内存中生成与真实DOM与之对应的...

  • Vue原理解析(六):全面深入理解响应式原理(上)-对象基础篇

    上一篇:Vue原理解析(五):彻底搞懂虚拟Dom到真实Dom的生成过程 vue之所以能数据驱动视图发生变更的关键,...

  • Vue之虚拟DOM

    Vue之虚拟DOM 为什么要用到虚拟DOM? 众所周知,DOM操作是JavaScript语言的硬伤。浏览器对DOM...

  • vue强制组件重新渲染

    在有些时候,我们需要强制重新渲染组件 例如,在使用elementUI的联级下拉选择框的时候,我们选择了指南/设计原...

  • vue 递归组件

    vue 递归组件 前言 对于一些有规律的 dom 结构,我们可以通过递归方式来生成这个结构,,那么在 vue 的模...

  • Object的变化侦测

    1.1 什么是变化侦测 vue.js会自动通过状态生成DOM,并将其输出到页面显示,这个过程叫渲染。vue.js的...

网友评论

      本文标题:Vue杂记之强制重新生成DOM

      本文链接:https://www.haomeiwen.com/subject/ytnezttx.html