perf: 代码优化 store/modules/tags-view

This commit is contained in:
pany 2023-05-26 18:16:44 +08:00
parent 32fae72f4f
commit 836818aedd

View File

@ -10,43 +10,34 @@ export const useTagsViewStore = defineStore("tags-view", () => {
//#region add //#region add
const addVisitedView = (view: TagView) => { const addVisitedView = (view: TagView) => {
if ( // 检查是否已经存在相同的 visitedView
visitedViews.value.some((v, index) => { const index = visitedViews.value.findIndex((v) => v.path === view.path)
if (v.path === view.path) { if (index !== -1) {
if (v.fullPath !== view.fullPath) {
// 防止 query 参数丢失 // 防止 query 参数丢失
visitedViews.value[index] = Object.assign({}, view) visitedViews.value[index].fullPath !== view.fullPath && (visitedViews.value[index] = { ...view })
} else {
// 添加新的 visitedView
visitedViews.value.push({ ...view })
} }
return true
}
})
) {
return
}
visitedViews.value.push(Object.assign({}, view))
} }
const addCachedView = (view: TagView) => { const addCachedView = (view: TagView) => {
if (typeof view.name !== "string") return if (typeof view.name !== "string") return
if (cachedViews.value.includes(view.name)) return if (cachedViews.value.includes(view.name)) return
if (view.meta?.keepAlive) { if (view.meta?.keepAlive) cachedViews.value.push(view.name)
cachedViews.value.push(view.name)
}
} }
//#endregion //#endregion
//#region del //#region del
const delVisitedView = (view: TagView) => { const delVisitedView = (view: TagView) => {
for (const [i, v] of visitedViews.value.entries()) { const index = visitedViews.value.findIndex((v) => v.path === view.path)
if (v.path === view.path) { if (index !== -1) visitedViews.value.splice(index, 1)
visitedViews.value.splice(i, 1)
break
}
}
} }
const delCachedView = (view: TagView) => { const delCachedView = (view: TagView) => {
if (typeof view.name !== "string") return if (typeof view.name !== "string") return
const index = cachedViews.value.indexOf(view.name) const index = cachedViews.value.indexOf(view.name)
index > -1 && cachedViews.value.splice(index, 1) if (index !== -1) cachedViews.value.splice(index, 1)
} }
//#endregion //#endregion
@ -56,10 +47,11 @@ export const useTagsViewStore = defineStore("tags-view", () => {
return v.meta?.affix || v.path === view.path return v.meta?.affix || v.path === view.path
}) })
} }
const delOthersCachedViews = (view: TagView) => { const delOthersCachedViews = (view: TagView) => {
if (typeof view.name !== "string") return if (typeof view.name !== "string") return
const index = cachedViews.value.indexOf(view.name) const index = cachedViews.value.indexOf(view.name)
if (index > -1) { if (index !== -1) {
cachedViews.value = cachedViews.value.slice(index, index + 1) cachedViews.value = cachedViews.value.slice(index, index + 1)
} else { } else {
// 如果 index = -1, 没有缓存的 tags // 如果 index = -1, 没有缓存的 tags
@ -70,10 +62,10 @@ export const useTagsViewStore = defineStore("tags-view", () => {
//#region delAll //#region delAll
const delAllVisitedViews = () => { const delAllVisitedViews = () => {
// keep affix tags // 保留固定的 tags
const affixTags = visitedViews.value.filter((tag) => tag.meta?.affix) visitedViews.value = visitedViews.value.filter((tag) => tag.meta?.affix)
visitedViews.value = affixTags
} }
const delAllCachedViews = () => { const delAllCachedViews = () => {
cachedViews.value = [] cachedViews.value = []
} }