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