perf: 代码优化 store/modules/tags-view
This commit is contained in:
parent
32fae72f4f
commit
836818aedd
@ -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].fullPath !== view.fullPath && (visitedViews.value[index] = { ...view })
|
||||||
visitedViews.value[index] = Object.assign({}, view)
|
} else {
|
||||||
}
|
// 添加新的 visitedView
|
||||||
return true
|
visitedViews.value.push({ ...view })
|
||||||
}
|
|
||||||
})
|
|
||||||
) {
|
|
||||||
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 = []
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user