最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue3緩存之路由緩存與Pinia狀態(tài)緩存詳解

 更新時間:2025年04月25日 09:55:34   作者:organwalk  
這篇文章主要介紹了Vue3緩存之路由緩存與Pinia狀態(tài)緩存,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

Vue3緩存兩種:路由緩存與Pinia狀態(tài)緩存

單頁應用中,最令人頭疼的就是頁面刷新或者回退時,數(shù)據(jù)丟失或重新加載的問題。

本文以微小demo介紹兩種緩存以應付Vue3項目中的絕大多數(shù)需要緩存的業(yè)務(wù)。

路由緩存

一個令人頭疼的問題是,當路由后退或原地刷新時,組件的生命周期會被重新觸發(fā),即可能導致生命周期鉤子中加載數(shù)據(jù)的函數(shù)被觸發(fā),為了避免這種情況,可以利用Vue-Router的路由緩存機制。

以一個文章列表為例,假設(shè)你點擊了一篇文章進行閱讀,并希望返回時不要重載數(shù)據(jù)或觸發(fā)生命周期鉤子,你可以在router配置中,為文章列表頁面的meta選項加上keepAlive屬性,并設(shè)置為true:

{
        path : '/articleList',
        name : 'articleList',
        component: ()=>import('@/view/article/ArticleListView.vue'),
        meta: { keepAlive:true } // 此處添加
}

然后找到router-view組件,并對其進行改寫:

 <router-view v-slot="{ Component }">
    <keep-alive>
      <component :is="Component"  v-if="$route.meta.keepAlive"/>
    </keep-alive>
    <component :is="Component"  v-if="!$route.meta.keepAlive"/>
  </router-view>

這樣就完成了對文章列表頁面的緩存。如果你需要為其他頁面進行緩存,則可以按需為其路由配置keepAlive屬性

Pinia狀態(tài)緩存

一種場景是,我們有一行Type標簽,點擊其可以加載不同分類下的文章列表,而這個Type會被我們納入狀態(tài)管理。

一個尷尬的事實是,當頁面刷新或者路由回退時,Type也隨之被重置,丟失了原來的狀態(tài)。為此,可以使用Pinia的額外插件,實現(xiàn)其緩存:

npm i pinia-plugin-persist --save

安裝完成后,在main.js文件中,進行如下配置:

import { createPinia } from 'pinia'
import piniaPluginPersist from 'pinia-plugin-persist' // 注意此處

const pinia = createPinia()
pinia.use(piniaPluginPersist)  // 注意此處

const app = createApp(App)
app.use(pinia)

然后回到我們的store.js中進行配置,假設(shè)針對Type進行狀態(tài)管理并緩存,可以配置其persist選項下的enabled屬性為true:

export const useNowTypeStore = defineStore('nowType', () => {
        const nowType = ref(0)

        function setNowType(realType) {
            nowType.value = realType
        }

        return {nowType, setNowType}
    }, {
        persist: {
            enabled: true
        }
    } // 注意此處
)

這樣就完成了對NowType的緩存。

總結(jié)

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

相關(guān)文章

  • vue .sync修飾符的使用詳解

    vue .sync修飾符的使用詳解

    這篇文章主要介紹了vue .sync修飾符的使用,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-06-06
  • vue3.0 加載json的方法(非ajax)

    vue3.0 加載json的方法(非ajax)

    這篇文章主要介紹了vue3.0 加載json的方法(非ajax),幫助大家更好的理解和學習vue,感興趣的朋友可以了解下
    2020-10-10
  • 詳解vue2.6插槽更新v-slot用法總結(jié)

    詳解vue2.6插槽更新v-slot用法總結(jié)

    在 2.6.0 中,我們?yōu)榫呙宀酆妥饔糜虿宀垡肓艘粋€新的統(tǒng)一的語法 (即 v-slot 指令)。這篇文章主要介紹了詳解vue2.6插槽更新v-slot用法總結(jié),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-03-03
  • Vue 進階教程之v-model詳解

    Vue 進階教程之v-model詳解

    這篇文章主要介紹了Vue 進階教程之v-model詳解 ,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • vue封裝Animate.css動畫庫的使用方式

    vue封裝Animate.css動畫庫的使用方式

    這篇文章主要介紹了vue封裝Animate.css動畫庫的使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • vue3中$attrs的變化與inheritAttrs的使用詳解

    vue3中$attrs的變化與inheritAttrs的使用詳解

    $attrs現(xiàn)在包括class和style屬性。?也就是說在vue3中$listeners不存在了,vue2中$listeners是單獨存在的,在vue3?$attrs包括class和style屬性,?vue2中?$attrs?不包含class和style屬性,這篇文章主要介紹了vue3中$attrs的變化與inheritAttrs的使用?,需要的朋友可以參考下
    2022-10-10
  • Vue3項目兼容低版本瀏覽器的全面指南

    Vue3項目兼容低版本瀏覽器的全面指南

    隨著 JavaScript 語言的快速演進,許多現(xiàn)代特性在低版本瀏覽器中無法運行,本文將詳細介紹如何使Vue3和TypeScript讓項目完美兼容 IE11等低版本瀏覽器,有需要的小伙伴可以參考一下
    2025-04-04
  • Vite+Vue3的組件自動注冊功能解讀

    Vite+Vue3的組件自動注冊功能解讀

    這篇文章主要介紹了Vite+Vue3的組件自動注冊功能使用,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2026-03-03
  • vue3配置Element及element-plus/lib/theme-chalk/index.css報錯的解決

    vue3配置Element及element-plus/lib/theme-chalk/index.css報錯的解決

    這篇文章主要介紹了vue3配置Element及element-plus/lib/theme-chalk/index.css報錯的解決,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • 如何取消Vue Watch監(jiān)聽的方法示例

    如何取消Vue Watch監(jiān)聽的方法示例

    在實際項目中,watch 本質(zhì)上是一種長期訂閱關(guān)系,如果不加控制,它會在數(shù)據(jù)變化的整個生命周期內(nèi)持續(xù)觸發(fā),這在很多場景下并不是我們想要的,所以我們有時會想取消Vue Watch監(jiān)聽,因此本文給大家介紹了取消Vue Watch監(jiān)聽的方法示例,需要的朋友可以參考下
    2026-01-01

最新評論

诏安县| 论坛| 南宫市| 阿克陶县| 咸丰县| 微山县| 高尔夫| 桑植县| 旅游| 体育| 南投县| 渭源县| 全州县| 博湖县| 沾化县| 三亚市| 松滋市| 嘉兴市| 克东县| 玛沁县| 隆林| 商城县| 临泉县| 邳州市| 芦溪县| 历史| 闻喜县| 玉门市| 峡江县| 宁陕县| 哈密市| 肇东市| 田东县| 高雄市| 麻栗坡县| 卓资县| 郸城县| 永寿县| 呼和浩特市| 正定县| 饶平县|