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

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

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

vue: 3.2.13 (script setup模式)

在vue開(kāi)發(fā)中使用keepAlive來(lái)緩存組件是比較常見(jiàn)的做法,但是當(dāng)我們需要實(shí)現(xiàn)退出登錄功能時(shí)就會(huì)發(fā)現(xiàn),跳轉(zhuǎn)到登錄頁(yè)面后再次登錄還殘留著上一個(gè)用戶緩存的數(shù)據(jù)

故障分析

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

解決方案

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

退出登錄按鈕邏輯部分

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

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

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

vuex部分邏輯

import {createStore} from 'vuex'

export default createStore({
  state() {
    return {
      //用戶信息和權(quán)限列表
      info: null,
      //默認(rèn)排除組件列表
      exclude: "Login"
    }
  },
  getters: {},
  mutations: {
    //清除權(quán)限列表
    out(state) {
      state.info = null
    },
    //清除keepAlive緩存,用于退出登錄
    changeExcludeOut(state, value) {
      state.exclude = value
    },
    //重新設(shè)置排除列表,用于跳轉(zhuǎn)到登錄頁(yè)
    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動(dòng)態(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()

登錄頁(yè)邏輯部分

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

const store = useStore()

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

總結(jié)

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

相關(guān)文章

  • Vue+ElementUI啟動(dòng)vue卡死的問(wèn)題及解決

    Vue+ElementUI啟動(dòng)vue卡死的問(wèn)題及解決

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

    vue3如何在setup中獲取DOM元素

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

    在線使用iconfont字體圖標(biāo)的簡(jiǎn)單實(shí)現(xiàn)

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

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

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

    在Vue 中獲取下拉框的文本及選項(xiàng)值操作

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

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

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

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

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

    LogicFlow內(nèi)置插件使用實(shí)例

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

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

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

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

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

最新評(píng)論