feat: 新增useStorage

This commit is contained in:
kailong321200875
2023-08-05 08:42:14 +08:00
parent 57a5fa7b82
commit dfea91c7e1
17 changed files with 86 additions and 68 deletions

View File

@@ -1,17 +0,0 @@
/**
* 配置浏览器本地存储的方式,可直接存储对象数组。
*/
import WebStorageCache from 'web-storage-cache'
type CacheType = 'sessionStorage' | 'localStorage'
export const useCache = (type: CacheType = 'sessionStorage') => {
const wsCache: WebStorageCache = new WebStorageCache({
storage: type
})
return {
wsCache
}
}

View File

@@ -1,23 +0,0 @@
import mitt from 'mitt'
import { onBeforeUnmount } from 'vue'
interface Option {
name: string // 事件名称
callback: Fn // 回调
}
const emitter = mitt()
export const useEmitt = (option?: Option) => {
if (option) {
emitter.on(option.name, option.callback)
onBeforeUnmount(() => {
emitter.off(option.name)
})
}
return {
emitter
}
}

View File

@@ -0,0 +1,31 @@
import { isArray, isObject } from '@/utils/is'
export const useStorage = (type: 'sessionStorage' | 'localStorage' = 'sessionStorage') => {
const setStorage = (key: string, value: any) => {
window[type].setItem(key, isArray(value) || isObject(value) ? JSON.stringify(value) : value)
}
const getStorage = (key: string) => {
const value = window[type].getItem(key)
try {
return JSON.parse(value || '')
} catch (error) {
return value
}
}
const removeStorage = (key: string) => {
window[type].removeItem(key)
}
const clear = () => {
window[type].clear()
}
return {
setStorage,
getStorage,
removeStorage,
clear
}
}