88 lines
1.7 KiB
JavaScript
88 lines
1.7 KiB
JavaScript
/**
|
|
* 本地存储封装 - 兼容微信小程序和 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
|
|
} |