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

vue3如何通過動態(tài)綁定exclude在退出登錄時清除keepAlive緩存

 更新時間:2025年04月28日 14:11:59   作者:Tt濤㏒  
這篇文章主要介紹了vue3如何通過動態(tài)綁定exclude在退出登錄時清除keepAlive緩存問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

vue: 3.2.13 (script setup模式)

在vue開發(fā)中使用keepAlive來緩存組件是比較常見的做法,但是當我們需要實現退出登錄功能時就會發(fā)現,跳轉到登錄頁面后再次登錄還殘留著上一個用戶緩存的數據

故障分析

上一個登錄的用戶操作的數據被keepAlive緩存了,這個用戶退出登錄后沒有清除緩存,再次登錄的用戶頁面會加載上一個用戶的緩存數據

解決方案

  • 通過動態(tài)綁定exclude屬性來決定需要排除哪些組件不需要緩存
  • 使用vuex來存放需要排除緩存的組件名稱

退出登錄按鈕邏輯部分

import {useStore} from 'vuex'
import {useRouter} from 'vue-router'
import {ref} from "vue";

const store = useStore()
const router = useRouter()
  
//將需要清除緩存的組件名存放在exclude中(<script setup>模式下只需填寫vue組件名,不需要寫文件后綴名)
//也可以存放一個正則表達式讓所有.vue文件緩存刪除,具體根據實際業(yè)務需求來設置
const exclude = ref<string>("Goods,Home,Order,Type,User,Login")

const out = () => {
  //清除用戶token
  sessionStorage.removeItem('o_m_s')
  //通過store.commit提交修改vuex中exclude數據,并將上面定義的exclude傳遞給vuex
  store.commit('changeExcludeOut', exclude.value)
  //清除權限列表
  store.commit('out')
  //跳轉到登錄頁或自定義頁面(跳轉登錄操作放在最后執(zhí)行)
  router.replace('/')
 }

vuex部分邏輯

import {createStore} from 'vuex'

export default createStore({
  state() {
    return {
      //用戶信息和權限列表
      info: null,
      //默認排除組件列表
      exclude: "Login"
    }
  },
  getters: {},
  mutations: {
    //清除權限列表
    out(state) {
      state.info = null
    },
    //清除keepAlive緩存,用于退出登錄
    changeExcludeOut(state, value) {
      state.exclude = value
    },
    //重新設置排除列表,用于跳轉到登錄頁
    changeExcludeLogin(state){
      state.exclude = "Login"
    }
  },
  actions: {},
  modules: {}
})

app.vue部分

<template>
  <nav-bar v-if="route.meta.navBar"></nav-bar>
  <router-view v-slot='{Component}'>
    <!--  使用v-bind動態(tài)綁定exclude,數據從vuex中提取  -->
    <keep-alive :exclude="store.state.exclude">
      <component :is='Component'></component>
    </keep-alive>
  </router-view>
</template>
import {useStore} from 'vuex'
const store = useStore()

登錄頁邏輯部分

import {onBeforeMount} from 'vue'
import {useStore} from 'vuex'

const store = useStore()

//在login組件掛載前通過store.commit重新修改vuex中的排除列表
onBeforeMount(() => {
  store.commit('changeExcludeLogin')
})

總結

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

相關文章

  • vue實現驗證碼按鈕倒計時功能

    vue實現驗證碼按鈕倒計時功能

    最近項目結束,空閑時間比較多,今天小編抽時間給大家使用vue寫一個小例子,就決定做驗證碼倒計時功能,具體實例代碼大家參考下本文
    2018-04-04
  • Vue實現在線預覽pdf文件功能(利用pdf.js/iframe/embed)

    Vue實現在線預覽pdf文件功能(利用pdf.js/iframe/embed)

    項目要求需要預覽pdf文件,網上找了很久,發(fā)現pdf.js的效果,這篇文章主要給大家介紹了關于Vue實現在線預覽pdf文件功能,主要利用pdf.js/iframe/embed來實現的,需要的朋友可以參考下
    2021-06-06
  • 詳解Vue.js中.native修飾符

    詳解Vue.js中.native修飾符

    這篇文章主要介紹了Vue.js中.native修飾符,給普通的HTML標簽監(jiān)聽一個事件,之后添加 .native 修飾符是不會起作用的。需要的朋友可以參考下
    2018-04-04
  • Vue使用axios發(fā)送請求簡單實現代碼

    Vue使用axios發(fā)送請求簡單實現代碼

    axios是一個基于Promise的,發(fā)送http請求的一個工具庫,并不是vue中的第三方插件,使用時不能通過“Vue.use()”安裝插件,需要在原型上進行綁定
    2023-04-04
  • vue3項目打包與上線詳細圖文教程

    vue3項目打包與上線詳細圖文教程

    這篇文章主要給大家介紹了關于vue3項目打包與上線的相關資料,在項目完成得差不多得時候,就可以開始打包部署了,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2023-12-12
  • vue 獲取到數據但卻渲染不到頁面上的解決方法

    vue 獲取到數據但卻渲染不到頁面上的解決方法

    這篇文章主要介紹了vue 獲取到數據但卻渲染不到頁面上的解決方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-11-11
  • Vue3中進行頁面局部刷新組件刷新的操作方法

    Vue3中進行頁面局部刷新組件刷新的操作方法

    這篇文章主要介紹了Vue3中進行頁面局部刷新組件刷新的操作方法,本文結合示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-12-12
  • vue中父子組件傳值,解決鉤子函數mounted只運行一次的操作

    vue中父子組件傳值,解決鉤子函數mounted只運行一次的操作

    這篇文章主要介紹了vue中父子組件傳值,解決鉤子函數mounted只運行一次的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • Vue?Validate表單組件的封裝詳解

    Vue?Validate表單組件的封裝詳解

    這篇文章主要為大家詳細介紹了Vue?Validate表單組件的封裝的相關知識,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起了解下
    2023-09-09
  • 使用Vue和ECharts創(chuàng)建交互式圖表的代碼示例

    使用Vue和ECharts創(chuàng)建交互式圖表的代碼示例

    在現代 Web 應用中,數據可視化是一個重要的組成部分,它不僅能夠幫助用戶更好地理解復雜的數據,還能提升用戶體驗,本文給大家使用Vue和ECharts創(chuàng)建交互式圖表的示例,需要的朋友可以參考下
    2024-11-11

最新評論

肥乡县| 衢州市| 富锦市| 武功县| 元氏县| 吉林市| 霸州市| 漠河县| 彰化市| 宝应县| 涿鹿县| 镇宁| 边坝县| 南澳县| 白山市| 天津市| 福海县| 平罗县| 平舆县| 翼城县| 陆川县| 高淳县| 禄丰县| 巴林右旗| 扎兰屯市| 贡觉县| 萝北县| 丰原市| 海盐县| 扎囊县| 芦溪县| 延边| 沂水县| 西畴县| 固安县| 三门县| 永德县| 托克逊县| 汝州市| 封开县| 简阳市|