Vue雜記之強(qiáng)制重新生成DOM

對于一個(gè)vue組件,如果我們想要吧它重置到最初始的狀態(tài),一般只需要將組件內(nèi)部的數(shù)據(jù)進(jìn)行重置即可。但是在某些情況下,這種方法并不適用。比如

  • 組件在初始化時(shí)并不會(huì)觸發(fā)watch選項(xiàng)中的函數(shù),而將數(shù)據(jù)進(jìn)行重置時(shí)則會(huì)觸發(fā)。如果我們想要將數(shù)據(jù)進(jìn)行重置卻不想執(zhí)行watch中的函數(shù)則會(huì)考慮重新生成DOM。
  • 如果我們直接對DOM進(jìn)行了修改而不是通過修改數(shù)據(jù)更新DOM。
  • 如果我們使用了CSS中的transition屬性實(shí)現(xiàn)過度動(dòng)畫。比如已經(jīng)完成了opacity:0opacity:1的過度效果。現(xiàn)在想將CSS重置為opacity:0卻不想出現(xiàn)動(dòng)畫效果。

強(qiáng)制重新生成DOM的實(shí)現(xiàn)

強(qiáng)制重新生成DOM可以通過vue中key來實(shí)現(xiàn)。在vue更新DOM時(shí),如果key值相同則會(huì)對原有組件進(jìn)行復(fù)用,如果不同,則會(huì)重新生成。

代碼示例:

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

每次點(diǎn)擊refresh按鈕,Demo組件都會(huì)重新生成

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 這篇筆記主要包含 Vue 2 不同于 Vue 1 或者特有的內(nèi)容,還有我對于 Vue 1.0 印象不深的內(nèi)容。關(guān)于...
    云之外閱讀 5,177評(píng)論 0 29
  • 1.安裝 可以簡單地在頁面引入Vue.js作為獨(dú)立版本,Vue即被注冊為全局變量,可以在頁面使用了。 如果希望搭建...
    Awey閱讀 11,298評(píng)論 4 129
  • Vue 實(shí)例 屬性和方法 每個(gè) Vue 實(shí)例都會(huì)代理其 data 對象里所有的屬性:var data = { a:...
    云之外閱讀 2,372評(píng)論 0 6
  • explode() 把字符串按照匹配的分割字符,分割成數(shù)組返回; 基礎(chǔ)語法:array explode(strin...
    彭曉華閱讀 839評(píng)論 0 0
  • 今天開始穿一個(gè)公司短袖上上班了,中午我值班,沒有時(shí)間去看書,只是閑著坐在店內(nèi),翻動(dòng)著手機(jī),時(shí)間流逝很快,沒有好像的...
    目瞪口袋閱讀 138評(píng)論 0 0

友情鏈接更多精彩內(nèi)容