外观
useStorage - 数据持久化
约 496 字大约 2 分钟
2025-11-06
useStorage 是一个轻量、跨平台的本地持久化数据存储工具,基于 uni-app Storage 能力实现,支持命名空间隔离、自动过期机制、TypeScript 泛型类型安全,确保多端运行兼容。
基础使用
import { useStorage } from '@/uni_modules/uview-unix';
// 创建存储实例
const storage = useStorage('user');
// 定义自定义类型
interface UserInfo {
username: string;
age: number;
}
// 存储不同类型数据
storage.set('username', '张三');
storage.set('age', 25);
storage.set('profile', { city: '北京', gender: '男' });
storage.set('userInfo', { username: '张三', age: 14 });
// 设置3秒后过期的数据
storage.set('expirationTime', '3秒后过期', 3);
// 获取存储数据
const username = storage.get<string>('username');
const age = storage.get<number>('age');
const profile = storage.get<UTSJSONObject>('profile');
// 使用自定义类型获取数据
const userInfo = storage.get<UserInfo>('userInfo');
// 设置默认值
const defaultValue = storage.get<string>('defaultValue', '这里是默认值');
const expiredValue = storage.get<string>('expirationTime');
// 延迟检查过期数据
setTimeout(() => {
const expiredValue = storage.get<string>('expirationTime');
console.log('过期后的值:', expiredValue);
}, 5000);
// 获取存储信息
const storageKeys = storage.keys();
const storageSize = storage.size;
// 检查键是否存在且未过期
const hasUsername = storage.has('username');
// 删除数据
storage.remove('username');
storage.delete('age'); // 别名
// 清空当前命名空间
storage.clear();API 文档
useStorage(prefix?: string): Storage
创建存储实例
- prefix:存储键前缀(命名空间)
- 返回:Storage 实例
set(key: string, value: any, expire: number = -1): void
存储数据
- key:存储键名
- value:存储值
- expire:过期时间(秒),默认 -1(永久)
get<T = any>(key: string, defaultValue: any = ''): T
获取数据
- key:存储键名
- defaultValue:默认值
- 返回:存储值或默认值
has(key: string): boolean
检查键是否存在且未过期
- key:存储键名
- 返回:是否存在
remove(key: string): void
删除数据
- key:存储键名
delete(key: string): void
remove 别名
clear(): void
清空当前命名空间
keys(): string[]
获取所有存储键
size: number
存储项数量
注意事项
- 单个存储项大小建议不超过 5MB
- 过期时间以秒为单位
- 不同前缀的存储实例数据完全隔离
