Files
CNCEC_APP/utils/storage.js
T

88 lines
1.7 KiB
JavaScript
Raw Normal View History

2026-08-17 11:01:21 +08:00
/**
* 本地存储封装 - 兼容微信小程序和 App
*/
/**
* 设置本地存储(同步)
* @param {string} key 键名
* @param {*} value 值(自动序列化)
*/
export function setStorage(key, value) {
try {
uni.setStorageSync(key, JSON.stringify(value))
} catch (e) {
console.error(`setStorage [${key}] 失败:`, e)
}
}
/**
* 获取本地存储(同步)
* @param {string} key 键名
* @param {*} defaultValue 默认值
* @returns {*}
*/
export function getStorage(key, defaultValue = null) {
try {
const value = uni.getStorageSync(key)
if (value) {
return JSON.parse(value)
}
return defaultValue
} catch (e) {
console.error(`getStorage [${key}] 失败:`, e)
return defaultValue
}
}
/**
* 移除本地存储
* @param {string} key 键名
*/
export function removeStorage(key) {
try {
uni.removeStorageSync(key)
} catch (e) {
console.error(`removeStorage [${key}] 失败:`, e)
}
}
/**
* 清空所有本地存储
*/
export function clearStorage() {
try {
uni.clearStorageSync()
} catch (e) {
console.error('clearStorage 失败:', e)
}
}
/**
* 设置带过期时间的存储
* @param {string} key 键名
* @param {*} value 值
* @param {number} expire 过期时间(秒)
*/
export function setStorageWithExpire(key, value, expire) {
const data = {
value,
expire: expire ? Date.now() + expire * 1000 : null,
}
setStorage(key, data)
}
/**
* 获取带过期时间的存储
* @param {string} key 键名
* @param {*} defaultValue 默认值
* @returns {*}
*/
export function getStorageWithExpire(key, defaultValue = null) {
const data = getStorage(key)
if (!data) return defaultValue
if (data.expire && Date.now() > data.expire) {
removeStorage(key)
return defaultValue
}
return data.value
}