当前位置: 首页 > news >正文

uni.setStorage 详解

uni.setStorage 详解

uni.setStorage 是 UniApp 提供的一个用于本地数据存储的 API,它可以将数据存储在客户端本地缓存中,类似于 Web 开发中的 localStorage

基本用法

uni.setStorage({key: 'storage_key',data: '要存储的内容',success: function () {console.log('存储成功');}
});

参数说明

参数名类型必填说明
keyString本地缓存中指定的 key
dataAny需要存储的内容,支持原生类型、对象、数组
successFunction接口调用成功的回调函数
failFunction接口调用失败的回调函数
completeFunction接口调用结束的回调函数(调用成功、失败都会执行)

实际应用示例

1. 存储简单数据

// 存储字符串
uni.setStorage({key: 'username',data: '张三',success: () => {console.log('用户名存储成功');}
});// 存储数字
uni.setStorage({key: 'userAge',data: 25
});

2. 存储对象或数组

// 存储对象
const userInfo = {name: '李四',age: 30,gender: 'male'
};uni.setStorage({key: 'userInfo',data: userInfo
});// 存储数组
const hobbies = ['阅读', '游泳', '编程'];
uni.setStorage({key: 'hobbies',data: hobbies
});

3. 使用异步语法

try {await uni.setStorage({key: 'token',data: 'abcdef123456'});console.log('存储成功');
} catch (e) {console.error('存储失败:', e);
}

相关方法

  1. uni.getStorage - 从本地缓存中获取指定 key 的内容
  2. uni.removeStorage - 从本地缓存中移除指定 key
  3. uni.clearStorage - 清理本地数据缓存
  4. uni.setStorageSync - setStorage 的同步版本
  5. uni.getStorageSync - getStorage 的同步版本

注意事项

  1. 存储限制:单个 key 允许存储的最大数据长度为 1MB,所有数据存储上限为 10MB
  2. 数据持久性:除非用户主动删除或调用清除方法,否则数据会一直保留
  3. 数据类型:存储时会自动将数据转为 JSON 字符串形式,取出时自动转换回来
  4. 同步与异步
    • 同步方法会阻塞当前任务,直到方法返回
    • 异步方法不会阻塞当前任务

最佳实践

  1. 对于简单的数据存取,可以使用同步方法简化代码
  2. 对于可能存储失败的重要数据,建议使用异步方法并处理错误
  3. 存储复杂对象时,建议先进行数据校验
  4. 敏感信息不建议直接存储在本地缓存中

示例:用户登录信息存储

// 存储登录信息
function saveLoginInfo(user) {return new Promise((resolve, reject) => {uni.setStorage({key: 'loginInfo',data: {userId: user.id,token: user.token,expireTime: Date.now() + 7 * 24 * 60 * 60 * 1000 // 7天后过期},success: resolve,fail: reject});});
}// 获取登录信息
async function getLoginInfo() {try {const res = await uni.getStorage({ key: 'loginInfo' });if (res.data.expireTime > Date.now()) {return res.data;}return null;} catch (e) {return null;}
}

uni.setStorage 是 UniApp 开发中非常实用的数据持久化方案,合理使用可以提升应用的用户体验。

http://www.dtcms.com/a/330711.html

相关文章:

  • MySQL客户端命令
  • pygame的帧处理中,涉及键盘的有`pg.event.get()`与`pg.key.get_pressed()` ,二者有什么区别与联系?
  • LT3045EDD#TRPBF ADI亚德诺 超低噪声LDO稳压器 电子元器件IC
  • Trae x Figma MCP一键将设计稿转化为精美网页
  • Docker build创建镜像命令入门教程
  • Redis (REmote DIctionary Server) 高性能数据库
  • 【cmake】编译cpp文件,安装MinGW
  • 《Leetcode》-面试题-hot100-动态规划
  • 《嵌入式 C 语言编码规范个人笔记》参考华为C语言规范标准
  • 标贝科技「十万音色·自然语音数据集」 重构AI语音训练基础设施
  • 机器视觉之图像处理篇
  • OpenCV Python——报错AttributeError: module ‘cv2‘ has no attribute ‘bgsegm‘,解决办法
  • 63w+有小程序注册的企业汇总数据(2024.2)
  • 阿里云TranslateGeneral - 机器翻译SDK-自己封账单文件版本—仙盟创梦IDE
  • CSS中实现一个三角形
  • 哪些对会交由SpringBoot容器管理?
  • Unity中的神经网络遗传算法实战
  • 【数据可视化-89】基孔肯雅热病例数据分析与可视化:Python + pyecharts洞察疫情动态
  • UE小:编辑器模式下「窗口/鼠标不在焦点」时仍保持高帧率
  • Flask中ORM的使用
  • 论郑和下西洋元素融入课件编辑器的意义与影响​
  • docker使用指定的MAC地址启动podman使用指定的MAC地址启动
  • 同创永益 IStorM CNBR云原生业务韧性管理平台 v3.3.0重磅发布:告别备份烦恼,云原生数据保护再升级!
  • 深度学习——03 神经网络(4)-正则化方法价格分类案例
  • MacOS 系统计算机专业好用工具安装
  • Nginx学习笔记(九)—— Nginx Rewrite深度解析
  • C++ STL学习 之 泛型编程
  • Unity Shader unity文档学习笔记(十九):粘土效果,任意网格转化成一个球(顶点动画,曲面着色器)
  • 算法提升之树上问题-(LCA)
  • vue3使用leaflet地图