vue3中keep-alive和vue-router的結合使用方式
前言
keep-alive
:Vue內置的一個組件,可以使被包含的組件保留狀態(tài),或避免重新渲染。router-view
:vue-router內置組件, 如果直接包含在keep-alive里面,所有路徑匹配到的組件都會被緩存。
提示:以下是本篇文章正文內容,下面案例可供參考
代碼
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?
當路由切換時想要達到頁面不重新緩存,避免組件被銷毀時即可使用keep-alive來實現(xiàn)。
例如:
此時切換到“About”組件后“Home”逐漸將會被銷毀,
再切換回“Home”組件時輸入框內信息已經被重新渲染消去。
為避免組件重新渲染所以使用“keep-alive”。
二、vue2中使用keep-alive
將“router-view”組件包含于“keep-alive”即可
<keep-alive> <router-view /> </keep-alive>
此時組件將保留狀態(tài),或避免重新渲染。
三、vue3中使用keep-alive
vue3的keep-alive應用相對于vue2有所變化,此處描述vue3時如何使用,詳情可見: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
值為字符串或者正則表達式匹配的組件name不會被銷毀。exclude
值為字符串或正則表達式匹配的組件name會被銷毀。
如,修改路由代碼為:
<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組件將會被銷毀,而Home組件則不會 <keep-alive exclude="About"> <component :is="Component" /> </keep-alive> </transition> </router-view> </template>
例如:
進入頁面
切換路由至“About”
“Home”組件未被銷毀,再切換路由至“Home”
“About”組件被銷毀
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
基于Element封裝一個表格組件tableList的使用方法
這篇文章主要介紹了基于Element封裝一個表格組件tableList的使用方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-06-06vue父組件給子組件的組件傳值provide inject的方法
在本篇文章里小編給大家整理的是一篇關于vue父組件給子組件的組件傳值provide inject的方法,需要的朋友們學習下。2019-10-10vue在install時node-sass@4.14.1?postinstall:node?scripts/buil
最近在npm install 的時候遇到了個問題,所以給大家總結下,下面這篇文章主要給大家介紹了關于vue在install時node-sass@4.14.1?postinstall:node?scripts/build.js錯誤的解決方法,需要的朋友可以參考下2023-05-05說說如何在Vue.js中實現(xiàn)數(shù)字輸入組件的方法
這篇文章主要介紹了說說如何在Vue.js中實現(xiàn)數(shù)字輸入組件的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-01-01element-ui?el-upload實現(xiàn)上傳文件及簡單的上傳文件格式驗證功能
前端上傳文件后,后端接受文件進行處理后直接返回處理后的文件,前端直接再將文件下載下來,下面這篇文章主要給大家介紹了關于element-ui?el-upload實現(xiàn)上傳文件及簡單的上傳文件格式驗證功能的相關資料,需要的朋友可以參考下2022-11-11