byt-ui
Version:
byt组件库
104 lines (100 loc) • 2.42 kB
JavaScript
/*
* @Description:
* @Author: 王国火
* @Date: 2022-10-08 09:10:49
* @LastEditTime: 2024-04-18 16:26:42
* @LastEditors: 王国火
*/
import { validatenull } from './validate'
import website from './website'
// 存储前缀 避免与同域的其它项目冲突
const keyName = website.key
/**
* 存储localStorage
*/
export const setStore = (key, value, type = 0) => {
const name = `${keyName}-${key}`
const obj = {
dataType: typeof (value),
content: value,
type: type,
datetime: new Date().getTime()
}
if (type) {
window.sessionStorage.setItem(name, JSON.stringify(obj))
} else {
window.localStorage.setItem(name, JSON.stringify(obj))
}
}
/**
* 获取localStorage
*/
export const getStore = (key, debug = false) => {
const name = `${keyName}-${key}`
let obj = window.sessionStorage.getItem(name) || window.localStorage.getItem(name)
let content
if (validatenull(obj)) return null
try {
obj = JSON.parse(obj)
} catch (e) {
return obj
}
if (debug) {
return obj
}
if (obj.dataType === 'string') {
content = obj.content
} else if (obj.dataType === 'number') {
content = Number(obj.content)
} else if (obj.dataType === 'boolean') {
content = JSON.parse(obj.content)
} else if (obj.dataType === 'object') {
content = obj.content
}
return content
}
/**
* 删除localStorage
*/
export const removeStore = (key) => {
const name = `${keyName}-${key}`
window.sessionStorage.removeItem(name)
window.localStorage.removeItem(name)
}
/**
* 获取全部localStorage
*/
export const getAllStore = (type = 0) => {
const list = []
if (type) {
for (let i = 0; i <= window.sessionStorage.length; i++) {
list.push({
name: window.sessionStorage.key(i),
content: getStore({
name: window.sessionStorage.key(i),
type: 'session'
})
})
}
} else {
for (let i = 0; i <= window.localStorage.length; i++) {
list.push({
name: window.localStorage.key(i),
content: getStore({
name: window.localStorage.key(i)
})
})
}
}
return list
}
/**
* 清空全部localStorage
*/
export const clearStore = (type = 0) => {
if (type) {
window.sessionStorage.clear()
} else {
window.localStorage.clear()
}
}