亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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來緩存組件是比較常見的做法,但是當我們需要實現(xiàn)退出登錄功能時就會發(fā)現(xiàn),跳轉到登錄頁面后再次登錄還殘留著上一個用戶緩存的數(shù)據(jù)

故障分析

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

解決方案

  • 通過動態(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文件緩存刪除,具體根據(jù)實際業(yè)務需求來設置
const exclude = ref<string>("Goods,Home,Order,Type,User,Login")

const out = () => {
  //清除用戶token
  sessionStorage.removeItem('o_m_s')
  //通過store.commit提交修改vuex中exclude數(shù)據(jù),并將上面定義的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,數(shù)據(jù)從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')
})

總結

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

相關文章

  • Vue+ElementUI啟動vue卡死的問題及解決

    Vue+ElementUI啟動vue卡死的問題及解決

    這篇文章主要介紹了Vue+ElementUI啟動vue卡死的問題及解決,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • vue3如何在setup中獲取DOM元素

    vue3如何在setup中獲取DOM元素

    這篇文章主要介紹了vue3如何在setup中獲取DOM元素問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • 在線使用iconfont字體圖標的簡單實現(xiàn)

    在線使用iconfont字體圖標的簡單實現(xiàn)

    這篇文章主要介紹了在線使用iconfont字體圖標的簡單實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • Vue3之Mixin的使用方式(全局,局部,setup內部使用)

    Vue3之Mixin的使用方式(全局,局部,setup內部使用)

    這篇文章主要介紹了Vue3之Mixin的使用方式(全局,局部,setup內部使用),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • 在Vue 中獲取下拉框的文本及選項值操作

    在Vue 中獲取下拉框的文本及選項值操作

    這篇文章主要介紹了在Vue 中獲取下拉框的文本及選項值操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • .vue文件 加scoped 樣式不起作用的解決方法

    .vue文件 加scoped 樣式不起作用的解決方法

    本篇文章主要介紹了.vue文件 加scoped 樣式不起作用的解決方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05
  • vue中的render函數(shù)、h()函數(shù)、函數(shù)式組件詳解

    vue中的render函數(shù)、h()函數(shù)、函數(shù)式組件詳解

    在vue中我們使用模板HTML語法來組建頁面的,使用render函數(shù)我們可以用js語言來構建DOM,這篇文章主要介紹了vue中的render函數(shù)、h()函數(shù)、函數(shù)式組件,需要的朋友可以參考下
    2023-02-02
  • LogicFlow內置插件使用實例

    LogicFlow內置插件使用實例

    這篇文章主要為大家介紹了LogicFlow內置插件使用實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-01-01
  • 一文詳解Vue3中的自定義指令的使用

    一文詳解Vue3中的自定義指令的使用

    自定義指令是?Vue.js?中一個強大的特性,它允許您擴展?Vue?的模板語法,本文將詳細介紹?Vue?3?中的自定義指令,包括如何創(chuàng)建它們以及如何將它們應用于您的應用程序,需要的可以參考下
    2023-11-11
  • vue中v-model如何綁定多循環(huán)表達式實戰(zhàn)案例

    vue中v-model如何綁定多循環(huán)表達式實戰(zhàn)案例

    v-model綁定的變量無論是對象還是數(shù)組都是綁定的value值,下面這篇文章主要給大家介紹了關于vue中v-model如何綁定多循環(huán)表達式的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-11-11

最新評論