Skip to content

Commit 893459d

Browse files
feat: 持久化缓存
1 parent 7c76d94 commit 893459d

File tree

10 files changed

+32
-40
lines changed

10 files changed

+32
-40
lines changed

mock/role/index.mock.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,8 @@ const adminList = [
2525
name: 'Analysis',
2626
meta: {
2727
title: 'router.analysis',
28-
noCache: true
28+
noCache: true,
29+
affix: true
2930
}
3031
},
3132
{
@@ -34,7 +35,8 @@ const adminList = [
3435
name: 'Workplace',
3536
meta: {
3637
title: 'router.workplace',
37-
noCache: true
38+
noCache: true,
39+
affix: true
3840
}
3941
}
4042
]
@@ -359,7 +361,7 @@ const adminList = [
359361
},
360362
{
361363
path: 'test',
362-
component: () => 'views/Function/Test',
364+
component: 'views/Function/Test',
363365
name: 'Test',
364366
meta: {
365367
title: 'router.permission',

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@
4545
"mitt": "^3.0.1",
4646
"nprogress": "^0.2.0",
4747
"pinia": "^2.1.7",
48-
"pinia-plugin-persist": "^1.0.0",
48+
"pinia-plugin-persistedstate": "^3.2.0",
4949
"qrcode": "^1.5.3",
5050
"qs": "^6.11.2",
5151
"url": "^0.11.3",

src/hooks/web/usePageLoading.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
import { useAppStoreWithOut } from '@/store/modules/app'
22

3-
const appStore = useAppStoreWithOut()
4-
53
export const usePageLoading = () => {
64
const loadStart = () => {
5+
const appStore = useAppStoreWithOut()
6+
77
appStore.setPageLoading(true)
88
}
99

1010
const loadDone = () => {
11+
const appStore = useAppStoreWithOut()
12+
1113
appStore.setPageLoading(false)
1214
}
1315

src/hooks/web/useTitle.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@ import { isString } from '@/utils/is'
33
import { useAppStoreWithOut } from '@/store/modules/app'
44
import { useI18n } from '@/hooks/web/useI18n'
55

6-
const appStore = useAppStoreWithOut()
7-
86
export const useTitle = (newTitle?: string) => {
97
const { t } = useI18n()
8+
const appStore = useAppStoreWithOut()
9+
1010
const title = ref(
1111
newTitle ? `${appStore.getTitle} - ${t(newTitle as string)}` : appStore.getTitle
1212
)

src/permission.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,6 @@ import { useNProgress } from '@/hooks/web/useNProgress'
77
import { usePermissionStoreWithOut } from '@/store/modules/permission'
88
import { usePageLoading } from '@/hooks/web/usePageLoading'
99

10-
const permissionStore = usePermissionStoreWithOut()
11-
12-
const appStore = useAppStoreWithOut()
13-
1410
const { getStorage } = useStorage()
1511

1612
const { start, done } = useNProgress()
@@ -22,6 +18,8 @@ const whiteList = ['/login'] // 不重定向白名单
2218
router.beforeEach(async (to, from, next) => {
2319
start()
2420
loadStart()
21+
const permissionStore = usePermissionStoreWithOut()
22+
const appStore = useAppStoreWithOut()
2523
if (getStorage(appStore.getUserInfo)) {
2624
if (to.path === '/login') {
2725
next({ path: '/' })

src/store/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import type { App } from 'vue'
22
import { createPinia } from 'pinia'
3-
import piniaPersist from 'pinia-plugin-persist'
3+
import piniaPluginPersistedstate from 'pinia-plugin-persistedstate'
44

55
const store = createPinia()
66

7-
store.use(piniaPersist)
7+
store.use(piniaPluginPersistedstate)
88

99
export const setupStore = (app: App<Element>) => {
1010
app.use(store)

src/store/modules/app.ts

Lines changed: 9 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,6 @@ import { defineStore } from 'pinia'
22
import { store } from '../index'
33
import { setCssVar, humpToUnderline } from '@/utils'
44
import { ElMessage, ComponentSize } from 'element-plus'
5-
import { useStorage } from '@/hooks/web/useStorage'
6-
7-
const { getStorage, setStorage } = useStorage()
85

96
interface AppState {
107
breadcrumb: boolean
@@ -57,14 +54,14 @@ export const useAppStore = defineStore('app', {
5754
fixedHeader: true, // 固定toolheader
5855
footer: true, // 显示页脚
5956
greyMode: false, // 是否开始灰色模式,用于特殊悼念日
60-
dynamicRouter: getStorage('dynamicRouter'), // 是否动态路由
61-
serverDynamicRouter: getStorage('serverDynamicRouter'), // 是否服务端渲染动态路由
62-
fixedMenu: getStorage('fixedMenu'), // 是否固定菜单
57+
dynamicRouter: false, // 是否动态路由
58+
serverDynamicRouter: false, // 是否服务端渲染动态路由
59+
fixedMenu: false, // 是否固定菜单
6360

64-
layout: getStorage('layout') || 'classic', // layout布局
65-
isDark: getStorage('isDark'), // 是否是暗黑模式
66-
currentSize: getStorage('currentSize') || 'default', // 组件尺寸
67-
theme: getStorage('theme') || {
61+
layout: 'classic', // layout布局
62+
isDark: false, // 是否是暗黑模式
63+
currentSize: 'default', // 组件尺寸
64+
theme: {
6865
// 主题色
6966
elColorPrimary: '#409eff',
7067
// 左侧菜单边框颜色
@@ -217,15 +214,12 @@ export const useAppStore = defineStore('app', {
217214
this.greyMode = greyMode
218215
},
219216
setDynamicRouter(dynamicRouter: boolean) {
220-
setStorage('dynamicRouter', dynamicRouter)
221217
this.dynamicRouter = dynamicRouter
222218
},
223219
setServerDynamicRouter(serverDynamicRouter: boolean) {
224-
setStorage('serverDynamicRouter', serverDynamicRouter)
225220
this.serverDynamicRouter = serverDynamicRouter
226221
},
227222
setFixedMenu(fixedMenu: boolean) {
228-
setStorage('fixedMenu', fixedMenu)
229223
this.fixedMenu = fixedMenu
230224
},
231225
setPageLoading(pageLoading: boolean) {
@@ -237,7 +231,6 @@ export const useAppStore = defineStore('app', {
237231
return
238232
}
239233
this.layout = layout
240-
setStorage('layout', this.layout)
241234
},
242235
setTitle(title: string) {
243236
this.title = title
@@ -251,18 +244,15 @@ export const useAppStore = defineStore('app', {
251244
document.documentElement.classList.add('light')
252245
document.documentElement.classList.remove('dark')
253246
}
254-
setStorage('isDark', this.isDark)
255247
},
256248
setCurrentSize(currentSize: ComponentSize) {
257249
this.currentSize = currentSize
258-
setStorage('currentSize', this.currentSize)
259250
},
260251
setMobile(mobile: boolean) {
261252
this.mobile = mobile
262253
},
263254
setTheme(theme: ThemeTypes) {
264255
this.theme = Object.assign(this.theme, theme)
265-
setStorage('theme', this.theme)
266256
},
267257
setCssVarTheme() {
268258
for (const key in this.theme) {
@@ -272,7 +262,8 @@ export const useAppStore = defineStore('app', {
272262
setFooter(footer: boolean) {
273263
this.footer = footer
274264
}
275-
}
265+
},
266+
persist: true
276267
})
277268

278269
export const useAppStoreWithOut = () => {

src/store/modules/lock.ts

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,7 @@ export const useLockStore = defineStore('lock', {
4040
}
4141
}
4242
},
43-
persist: {
44-
enabled: true,
45-
strategies: [{ key: 'lock', storage: localStorage }]
46-
}
43+
persist: true
4744
})
4845

4946
export const useLockStoreWithOut = () => {

src/store/modules/permission.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,8 @@ export const usePermissionStore = defineStore('permission', {
7676
setMenuTabRouters(routers: AppRouteRecordRaw[]): void {
7777
this.menuTabRouters = routers
7878
}
79-
}
79+
},
80+
persist: false
8081
})
8182

8283
export const usePermissionStoreWithOut = () => {

src/store/modules/tagsView.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,6 @@ import { findIndex } from '@/utils'
77
import { useStorage } from '@/hooks/web/useStorage'
88
import { useAppStoreWithOut } from './app'
99

10-
const appStore = useAppStoreWithOut()
11-
1210
const { getStorage } = useStorage()
1311

1412
export interface TagsViewState {
@@ -95,6 +93,8 @@ export const useTagsViewStore = defineStore('tagsView', {
9593
},
9694
// 删除所有tag
9795
delAllVisitedViews() {
96+
const appStore = useAppStoreWithOut()
97+
9898
// const affixTags = this.visitedViews.filter((tag) => tag.meta.affix)
9999
this.visitedViews = getStorage(appStore.getUserInfo)
100100
? this.visitedViews.filter((tag) => tag?.meta?.affix)
@@ -157,7 +157,8 @@ export const useTagsViewStore = defineStore('tagsView', {
157157
}
158158
}
159159
}
160-
}
160+
},
161+
persist: false
161162
})
162163

163164
export const useTagsViewStoreWithOut = () => {

0 commit comments

Comments
 (0)