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

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è)務。

路由緩存

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

以一個文章列表為例,假設你點擊了一篇文章進行閱讀,并希望返回時不要重載數(shù)據(jù)或觸發(fā)生命周期鉤子,你可以在router配置中,為文章列表頁面的meta選項加上keepAlive屬性,并設置為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中進行配置,假設針對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無法設置滾動位置的問題

    解決vue無法設置滾動位置的問題

    這篇文章主要介紹了解決vue無法設置滾動位置的問題 ,需要的朋友可以參考下
    2018-10-10
  • element-ui 中的table的列隱藏問題解決

    element-ui 中的table的列隱藏問題解決

    這篇文章主要介紹了element-ui 中的table的列隱藏問題解決,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-08-08
  • Vue3?函數(shù)式彈窗的實例小結(jié)

    Vue3?函數(shù)式彈窗的實例小結(jié)

    這篇文章主要介紹了Vue3?函數(shù)式彈窗的實例小結(jié),本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-11-11
  • vue2和vue3子組件父組件之間的傳值方法

    vue2和vue3子組件父組件之間的傳值方法

    在組件化開發(fā)的過程中難免會遇見子組件和父組件之間的通訊那么這里講關(guān)于vue2和vue3不同的通訊方式,文中有詳細的代碼示例供大家參考,感興趣的同學可以閱讀下
    2023-05-05
  • 一次vue項目優(yōu)化的實際操作記錄

    一次vue項目優(yōu)化的實際操作記錄

    用vue開發(fā)項目上線以后,發(fā)現(xiàn)首頁加載速度非常慢,如果項目比較大,甚至可能出現(xiàn)10s以上的等待,下面這篇文章主要給大家介紹了關(guān)于vue項目優(yōu)化的相關(guān)資料,需要的朋友可以參考下
    2022-09-09
  • 如何用Vue3切換中英文顯示舉例說明

    如何用Vue3切換中英文顯示舉例說明

    這篇文章主要給大家介紹了關(guān)于如何用Vue3切換中英文顯示的相關(guān)資料,在Vue3中使用vue-i18n進行國際化設置,包括安裝、配置、在組件中使用$t方法獲取翻譯字符串,以及可選的動態(tài)加載語言包以提高性能,需要的朋友可以參考下
    2024-11-11
  • 解決VUE雙向綁定失效的問題

    解決VUE雙向綁定失效的問題

    今天小編就為大家分享一篇解決VUE雙向綁定失效的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-10-10
  • vue使用Vue.extend創(chuàng)建全局toast組件實例

    vue使用Vue.extend創(chuàng)建全局toast組件實例

    這篇文章主要介紹了vue使用Vue.extend創(chuàng)建全局toast組件實例,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • 前端vue3?setup使用教程

    前端vue3?setup使用教程

    這篇文章主要為大家介紹了前端vue3架構(gòu)setup使用教程,詳細介紹?setup?的用法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-02-02
  • vue實現(xiàn)登錄功能

    vue實現(xiàn)登錄功能

    這篇文章主要介紹了vue實現(xiàn)登錄功能的步驟,幫助大家更好的理解和使用vue框架,感興趣的朋友可以了解下
    2020-12-12

最新評論