91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

vue前端開發keepAlive怎么用

發布時間:2021-10-11 09:25:43 來源:億速云 閱讀:137 作者:小新 欄目:開發技術

這篇文章給大家分享的是有關vue前端開發keepAlive怎么用的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

前言

keep-alive 是 Vue 的內置組件,當它包裹動態組件時,會緩存不活動的組件實例,而不是銷毀它們。

在組件切換過程中將狀態保留在內存中,防止重復渲染DOM,減少加載時間及性能消耗,提高用戶體驗性。使用方式為

<keep-alive>
    <component />
</keep-alive>

這里的component會被緩存。

keep-avlive鉤子函數

被包含在 keep-alive 中創建的組件,會多出兩個生命周期的鉤子: activated與deactivated。activated:在 keep-alive 組件激活時調用,keep-alive 會將數據保留在內存中,如果要在每次進入頁面的時候獲取最新的數據,需要在 activated 階段獲取數據,承擔原來 created 鉤子函數中獲取數據的任務
deactivated:在 keep-alive 組件停用時調用,使用了keep-alive就不會調用beforeDestory和destoryed鉤子,因為組件沒有被銷毀,而是被緩存起來了,所以deactivated鉤子可以看做是beforeDestory和destoryed的替代,如清空localStorge數據等。

keep-avlive緩存哪些組件

keep-avlive緩存哪些組件通過兩種方式,一種是通過keep-avlive組件提供的include、exclude屬性通過參數進行匹配對應的組件進行緩存,另一種通過route中meta屬性的設置。
使用include、exclude屬性完成緩存組件設置

/*將緩存 name 為 test 的組件*/
<keep-alive include='test'>
      <router-view/>
</keep-alive>

使用include是將緩存name為test的組件。

<keep-alive exclude="test"> 
  <router-view/>
</keep-alive>

使用exclude,將不緩存name為test的組件。
使用route中meta屬性的設置緩存組件,如

export default new Router({
  mode: 'history',
  routes: [
    {
      path: '/',
      name: 'home',
      component: Home,
      redirect: 'goods',
      children: [
        {
          path: 'goods',
          name: 'goods',
          component: Goods,
          meta: {
        	keepAlive: false // 不需要緩存
      	  }
        },
        {
          path: 'ratings',
          name: 'ratings',
          component: Ratings,
          meta: {
        	keepAlive: true  // 需要緩存
      	  }
        }
      ]
    }
  ]
})

goods組件需要緩存,ratings不需要緩存。在使用 到中使用以下語句動態完成組件緩存設置,設置代碼如下

<template>
  <div id="app">
  	<keep-alive>
      <router-view v-if="$route.meta.keepAlive"></router-view>
    </keep-alive>
    <router-view v-if="!$route.meta.keepAlive"></router-view>
  </div>
</template>

示例

設置兩個組件KeepCom1,KeepCom2,KeepCom1設置緩存,KeepCom2不設置緩存。同時測試兩個鉤子函數的使用,這里使用路由meta實現緩存組件的設置。
KeepCom1代碼如下:

<template>
  <div class="wrapper">
    <ul class="content"></ul>
    <button class="add" id="add" @click="add">添加子元素</button>
  </div>
</template>
<script>
export default {
  name: 'keepCom1',
  methods: {
    add () {
      let ul = document.getElementsByClassName('content')[0]
      let li = document.createElement('li')
      li.innerHTML = '我是添加的元素'
      ul.appendChild(li)
    }
  },
  activated () {
    console.log('緩存activated執行')
  },
  deactivated () {
    console.log('緩存deactivated執行')
  }
}
</script>
<style>
</style>

KeepCom2代碼如下:

<template>
  <div class="wrapper">
    <ul class="content"></ul>
    <button class="add" id="add" @click="add">添加子元素</button>
  </div>
</template>

<script>
export default {
  name: 'keepCom2',
  methods: {
    add () {
      let ul = document.getElementsByClassName('content')[0]
      let li = document.createElement('li')
      li.innerHTML = '我是添加的元素'
      ul.appendChild(li)
    }
  },
  activated () {
    console.log('緩存activated執行')
  },
  deactivated () {
    console.log('緩存deactivated執行')
  }
}
</script>
<style>
</style>

KeepCom1和KeepCom2代碼基本一致,就是給頁面增加結點。
keepAvliveTest代碼如下

<template>
  <div align="center" >
    <router-link to="/keepAvliveTest/keepcom1">使用緩存</router-link>
    <router-link to="/keepAvliveTest/keepcom2">不使用緩存</router-link>
    <keep-alive>
      <router-view v-if="$route.meta.keepAlive"></router-view>
    </keep-alive>
    <router-view v-if="!$route.meta.keepAlive"></router-view>
  </div>
</template>
<script>
export default {
  name: 'keepAvliveTest'
}
</script>
<style>
</style>

完成keepcom1和keepcom2組件切換,執行后的結果為

vue前端開發keepAlive怎么用

keepcom1使用緩存,切換頁面時,上次添加三個元素還在,而且鉤子函數得到執行。keepcom2沒有使用緩存,切換頁面時,上次添加一個元素不存在了,恢復到初始狀態。而且兩個鉤子沒有得到執行。

感謝各位的閱讀!關于“vue前端開發keepAlive怎么用”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

余姚市| 宁蒗| 安顺市| 梨树县| 新绛县| 民县| 枞阳县| 陈巴尔虎旗| 从江县| 丽水市| 勃利县| 汉中市| 宁德市| 商南县| 怀来县| 北流市| 尼勒克县| 阳信县| 仁怀市| 抚松县| 石门县| 通山县| 河池市| 获嘉县| 黄山市| 漳浦县| 龙江县| 尚义县| 伊宁市| 拉萨市| 晋宁县| 宜春市| 清河县| 临高县| 宁远县| 张家口市| 吉木乃县| 德昌县| 鄂托克旗| 崇左市| 邢台县|