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

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

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

vue: 3.2.13 (script setup模式)

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

故障分析

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

解決方案

  • 通過動(dòng)態(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組件名,不需要寫文件后綴名)
//也可以存放一個(gè)正則表達(dá)式讓所有.vue文件緩存刪除,具體根據(jù)實(shí)際業(yè)務(wù)需求來設(shè)置
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)
  //清除權(quán)限列表
  store.commit('out')
  //跳轉(zhuǎn)到登錄頁或自定義頁面(跳轉(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)到登錄頁
    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()

登錄頁邏輯部分

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

const store = useStore()

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

總結(jié)

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

相關(guān)文章

  • vue實(shí)現(xiàn)驗(yàn)證碼按鈕倒計(jì)時(shí)功能

    vue實(shí)現(xiàn)驗(yàn)證碼按鈕倒計(jì)時(shí)功能

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

    Vue實(shí)現(xiàn)在線預(yù)覽pdf文件功能(利用pdf.js/iframe/embed)

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

    詳解Vue.js中.native修飾符

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

    Vue使用axios發(fā)送請(qǐng)求簡(jiǎn)單實(shí)現(xiàn)代碼

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

    vue3項(xiàng)目打包與上線詳細(xì)圖文教程

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

    vue 獲取到數(shù)據(jù)但卻渲染不到頁面上的解決方法

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

    Vue3中進(jìn)行頁面局部刷新組件刷新的操作方法

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

    vue中父子組件傳值,解決鉤子函數(shù)mounted只運(yùn)行一次的操作

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

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

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

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

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

最新評(píng)論

巴塘县| 罗江县| 三明市| 寿阳县| 邛崃市| 伊吾县| 永城市| 柞水县| 鄂托克前旗| 邮箱| 奉节县| 馆陶县| 固始县| 临清市| 饶平县| 罗平县| 江安县| 容城县| 永安市| 新晃| 鄂伦春自治旗| 贡觉县| 华容县| 湖口县| 蒙阴县| 武强县| 屏东市| 白水县| 聂荣县| 博野县| 饶平县| 平昌县| 仲巴县| 冷水江市| 永胜县| 肇州县| 光泽县| 建德市| 饶平县| 和龙市| 恭城|