创建 src/store/modules/keepAlive.ts 并实现 useKeepAliveStore
// src/store/modules/keepAlive.ts
import { defineStore } from 'pinia'
import { ref } from 'vue'
export const useKeepAliveStore = defineStore('keep-alive', () => {
// 已缓存的组件名称列表
const list = ref<string[]>([])
/**
* 添加缓存
*/
const add = (name: string | string[]) => {
if (typeof name === 'string') {
if (!list.value.includes(name)) {
list.value.push(name)
}
} else {
name.forEach((v) => {
if (v && !list.value.includes(v)) {
list.value.push(v)
}
})
}
}
/**
* 移除缓存
*/
const remove = (name: string | string[]) => {
if (typeof name === 'string') {
list.value = list.value.filter((v) => {
return v !== name
})
} else {
list.value = list.value.filter((v) => {
return !name.includes(v)
})
}
}
/**
* 清空缓存
*/
const clear = () => {
list.value = []
}
return { list, add, remove, clear }
})