欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

vue3中keep-alive和vue-router的結(jié)合使用方式

 更新時(shí)間:2022年10月19日 11:30:03   作者:大橘為重¨  
這篇文章主要介紹了vue3中keep-alive和vue-router的結(jié)合使用方式,?具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

前言

  • keep-alive:Vue內(nèi)置的一個(gè)組件,可以使被包含的組件保留狀態(tài),或避免重新渲染。
  • router-view:vue-router內(nèi)置組件, 如果直接包含在keep-alive里面,所有路徑匹配到的組件都會(huì)被緩存。

提示:以下是本篇文章正文內(nèi)容,下面案例可供參考

代碼

Hmoe組件:

<template>
  <div class="home">
    <input type="text" name="" id="">
  </div>
</template>
<script>
export default {
  name: 'Home',
  components: {},
  created() {
    console.log('Home被創(chuàng)建');
  },
  unmounted() {
    console.log('Home被銷毀');
  }
}
</script>

About組件:

<template>
  <div class="about">
    <input type="text">
  </div>
</template>
<script>
export default {
  name: 'About',
  components: {},
  created() {
    console.log('About被創(chuàng)建');
  },
  unmounted() {
    console.log('About被銷毀');
  }
}
</script>

路由代碼:

<template>
  <div id="nav">
    <router-link to="/">Home</router-link> |
    <router-link to="/about">About</router-link>
  </div>
  <router-view/>
</template>

一、為何要使用keep-alive?

當(dāng)路由切換時(shí)想要達(dá)到頁面不重新緩存,避免組件被銷毀時(shí)即可使用keep-alive來實(shí)現(xiàn)。

例如:

此時(shí)切換到“About”組件后“Home”逐漸將會(huì)被銷毀,

再切換回“Home”組件時(shí)輸入框內(nèi)信息已經(jīng)被重新渲染消去。

為避免組件重新渲染所以使用“keep-alive”。

二、vue2中使用keep-alive

將“router-view”組件包含于“keep-alive”即可

<keep-alive>
      <router-view />
</keep-alive>

此時(shí)組件將保留狀態(tài),或避免重新渲染。

三、vue3中使用keep-alive

vue3的keep-alive應(yīng)用相對(duì)于vue2有所變化,此處描述vue3時(shí)如何使用,詳情可見:Vue Router文檔

使

<keep-alive>
      <router-view />
</keep-alive>

改變?yōu)槿缦麓a,

<router-view v-slot="{ Component }">
  <transition>
    <keep-alive>
      <component :is="Component" />
    </keep-alive>
  </transition>
</router-view>

即可。

四、keep-alive屬性“include,exclude”的使用

注意:使用include,exclude 屬性需要給所有vue類的name賦值,否則 include,exclude將不生效

  • include 值為字符串或者正則表達(dá)式匹配的組件name不會(huì)被銷毀。
  • exclude 值為字符串或正則表達(dá)式匹配的組件name會(huì)被銷毀。

如,修改路由代碼為:

<template>
  <div id="nav">
    <router-link to="/">Home</router-link> |
    <router-link to="/about">About</router-link>
  </div>
  <router-view v-slot="{ Component }">
    <transition>
    //About組件將會(huì)被銷毀,而Home組件則不會(huì)
      <keep-alive exclude="About">             
        <component :is="Component" />
      </keep-alive>
    </transition>
  </router-view>
</template>

例如:

進(jìn)入頁面

切換路由至“About”

“Home”組件未被銷毀,再切換路由至“Home”

“About”組件被銷毀

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論