mirror of
https://github.com/vbenjs/vue-vben-admin.git
synced 2025-01-23 17:50:25 +08:00
feat: add pinia persist plugin (#3173)
This commit is contained in:
parent
882270d5ba
commit
2152b3f779
@ -90,6 +90,7 @@
|
|||||||
"nprogress": "^0.2.0",
|
"nprogress": "^0.2.0",
|
||||||
"path-to-regexp": "^6.2.1",
|
"path-to-regexp": "^6.2.1",
|
||||||
"pinia": "2.1.4",
|
"pinia": "2.1.4",
|
||||||
|
"pinia-plugin-persistedstate": "^3.2.0",
|
||||||
"print-js": "^1.6.0",
|
"print-js": "^1.6.0",
|
||||||
"qrcode": "^1.5.3",
|
"qrcode": "^1.5.3",
|
||||||
"qs": "^6.11.2",
|
"qs": "^6.11.2",
|
||||||
|
11
pnpm-lock.yaml
generated
11
pnpm-lock.yaml
generated
@ -77,6 +77,9 @@ importers:
|
|||||||
pinia:
|
pinia:
|
||||||
specifier: 2.1.4
|
specifier: 2.1.4
|
||||||
version: 2.1.4(typescript@5.1.6)(vue@3.3.4)
|
version: 2.1.4(typescript@5.1.6)(vue@3.3.4)
|
||||||
|
pinia-plugin-persistedstate:
|
||||||
|
specifier: ^3.2.0
|
||||||
|
version: 3.2.0(pinia@2.1.4)
|
||||||
print-js:
|
print-js:
|
||||||
specifier: ^1.6.0
|
specifier: ^1.6.0
|
||||||
version: 1.6.0
|
version: 1.6.0
|
||||||
@ -9075,6 +9078,14 @@ packages:
|
|||||||
requiresBuild: true
|
requiresBuild: true
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
|
/pinia-plugin-persistedstate@3.2.0(pinia@2.1.4):
|
||||||
|
resolution: {integrity: sha512-tZbNGf2vjAQcIm7alK40sE51Qu/m9oWr+rEgNm/2AWr1huFxj72CjvpQcIQzMknDBJEkQznCLAGtJTIcLKrKdw==}
|
||||||
|
peerDependencies:
|
||||||
|
pinia: ^2.0.0
|
||||||
|
dependencies:
|
||||||
|
pinia: 2.1.4(typescript@5.1.6)(vue@3.3.4)
|
||||||
|
dev: false
|
||||||
|
|
||||||
/pinia@2.1.4(typescript@5.1.6)(vue@3.3.4):
|
/pinia@2.1.4(typescript@5.1.6)(vue@3.3.4):
|
||||||
resolution: {integrity: sha512-vYlnDu+Y/FXxv1ABo1vhjC+IbqvzUdiUC3sfDRrRyY2CQSrqqaa+iiHmqtARFxJVqWQMCJfXx1PBvFs9aJVLXQ==}
|
resolution: {integrity: sha512-vYlnDu+Y/FXxv1ABo1vhjC+IbqvzUdiUC3sfDRrRyY2CQSrqqaa+iiHmqtARFxJVqWQMCJfXx1PBvFs9aJVLXQ==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
|
@ -1,7 +1,9 @@
|
|||||||
import type { App } from 'vue';
|
import type { App } from 'vue';
|
||||||
import { createPinia } from 'pinia';
|
import { createPinia } from 'pinia';
|
||||||
|
import { registerPiniaPersistPlugin } from '@/store/plugin/persist';
|
||||||
|
|
||||||
const store = createPinia();
|
const store = createPinia();
|
||||||
|
registerPiniaPersistPlugin(store);
|
||||||
|
|
||||||
export function setupStore(app: App<Element>) {
|
export function setupStore(app: App<Element>) {
|
||||||
app.use(store);
|
app.use(store);
|
||||||
|
38
src/store/plugin/persist.ts
Normal file
38
src/store/plugin/persist.ts
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
/**
|
||||||
|
* Pinia Persist Plugin
|
||||||
|
* Pinia 持久化插件
|
||||||
|
* @link https://prazdevs.github.io/pinia-plugin-persistedstate/zh/guide/
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
import type { Pinia } from 'pinia';
|
||||||
|
import { createPersistedState } from 'pinia-plugin-persistedstate';
|
||||||
|
import type { PersistedStateFactoryOptions } from 'pinia-plugin-persistedstate';
|
||||||
|
import { getCommonStoragePrefix } from '@/utils/env';
|
||||||
|
|
||||||
|
export const PERSIST_KEY_PREFIX = getCommonStoragePrefix();
|
||||||
|
|
||||||
|
// TODO customSerializer
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Register Pinia Persist Plugin
|
||||||
|
* 注册 Pinia 持久化插件
|
||||||
|
*
|
||||||
|
* @param pinia Pinia instance Pinia 实例
|
||||||
|
*/
|
||||||
|
export function registerPiniaPersistPlugin(pinia: Pinia) {
|
||||||
|
pinia.use(createPersistedState(createPersistedStateOptions(PERSIST_KEY_PREFIX)));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create Persisted State Options
|
||||||
|
* 创建持久化状态选项
|
||||||
|
*
|
||||||
|
* @param keyPrefix prefix for storage key 储存键前缀
|
||||||
|
* @returns persisted state factory options
|
||||||
|
*/
|
||||||
|
export function createPersistedStateOptions(keyPrefix: string): PersistedStateFactoryOptions {
|
||||||
|
return {
|
||||||
|
storage: localStorage,
|
||||||
|
key: (id) => `${keyPrefix}__${id}`,
|
||||||
|
};
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user