缩略语:MMKV
React Natural 的快捷键/值存储 .
- 缩略语:MMKV 是WeChat开发的高效而小型的移动密钥值存储框架. 见 10分/米克瓦 更多信息
- 反应-内生-mmkv 是允许您轻松使用的库 缩略语:MMKV 通过快速和直接的JS 绑定在本地的 C++ 库里.
特征
- 获取 财务报告和审定财务报表 设定 字符串、布尔、数字和矩阵
- 完全同步 电话,没有自动/等待, 没有承诺,没有桥.
- 加密 支持(安全存储)
- 多个实例 支持(将用户数据与全球数据分开)
- 自定义存储位置
- 业绩好 因为一切 以 C++ 写
- ~30x 速度快于 AsyncStorage
- 用途 司法独立协会 财务报告和审定财务报表 C++ 组合 涡轮摩多 而不是"老"桥
- iOS系统, (中文(简体) ), 机器人 财务报告和审定财务报表 网页 支助
- 易于使用 反应钩 API 密码
反应-内生-mmkv V3
[大 反应-内生-mmkv V3现为纯C++涡轮模具,并 需要启用新架构. (反应-内生 0.75+)
- 如果您想要使用反应- native-mmkv 3.x.x,您需要启用应用程序中的新架构(参见 应用的新建筑(中文(简体) )
- 如果您尚不能使用新架构, 请暂时降级以反应- native- mmkv 2. x.
基准
存储奔驰 比较流行的存储库, 通过读取存储值 1000 次 :
安装
原生反应
yarn add react-native-mmkv
cd ios && pod install
博览
npx expo install react-native-mmkv
npx expo prebuild
使用量
创建新实例
要创建 MMKV 存储的新实例, 请使用 MMKV 建筑师。 建议您在整个应用程序中重新使用这个实例,而不是每次创建一个新的实例,所以 export 页:1 storage 对象.
默认
import { MMKV } from 'react-native-mmkv'
export const storage = new MMKV()
使用默认的 MMKV 存储 ID () 创建新的存储实例mmkv.default) (中文(简体) ).
App 组或扩展
如果您想要在您的应用程序和其他应用程序或应用程序扩展名之间共享 MMKV 数据, 请打开 Info.plist 创建 AppGroup 键,包含您的应用程序组值。 MMKV随后会自动将数据存储在应用组内,通过使用MMKV的多处理模式,从同一组中的其他应用或应用扩展读取并写入.
见 配置应用组。 。 。 .
自定义
import { MMKV, Mode } from 'react-native-mmkv'
export const storage = new MMKV({
id: `user-${userId}-storage`,
path: `${USER_DIRECTORY}/storage`,
encryptionKey: 'hunter2',
mode: Mode.MULTI_PROCESS
})
这使用自定义的 MMKV 存储 ID 创建了新的存储实例 。 通过使用自定义存储 ID, 您的存储从默认的 MMKV 存储您的应用程序中分离 .
下列值可以配置 :
idMMKV案的身份证 如果你想使用多个实例,请使用不同的ID. 例如,您可以将全球应用程序的存储器和登录用户的存储器分开. (如果path或者说encryptionKey字段,否则默认为:'mmkv.default'(中文(简体) )path: MMKV实例的根道. 默认情况下, MMKV 在内部存储文件$(Documents)/mmkv/您可以在 MMKV 初始化上自定义 MMKV 的根目录(文档 : iOS系统 编号 : 机器人(中文(简体) )encryptionKey: MMKV实例的加密/解密密钥. 默认情况下,MMKV将所有的密钥值以纯文本存储在文件中,依靠iOS/Android的沙盒来确保文件被加密. 如果您担心信息泄露, 您可以选择加密 MMKV 。 (文件: iOS系统 编号 : 机器人(中文(简体) )mode: MMKV 的处理行为 - 当设定为MULTI_PROCESS,MMKV实例将假设数据可以从外部改变(例如App Clips,扩展或App Groups).
设定
storage.set('user.name', 'Marc')
storage.set('user.age', 21)
storage.set('is-mmkv-fast-asf', true)
获取
const username = storage.getString('user.name') // 'Marc'
const age = storage.getNumber('user.age') // 21
const isMmkvFastAsf = storage.getBoolean('is-mmkv-fast-asf') // true
钩子
const [username, setUsername] = useMMKVString('user.name')
const [age, setAge] = useMMKVNumber('user.age')
const [isMmkvFastAsf, setIsMmkvFastAf] = useMMKVBoolean('is-mmkv-fast-asf')
密钥
// checking if a specific key exists
const hasUsername = storage.contains('user.name')
// getting all keys
const keys = storage.getAllKeys() // ['user.name', 'user.age', 'is-mmkv-fast-asf']
// delete a specific key + value
storage.delete('user.name')
// delete all keys
storage.clearAll()
对象
const user = {
username: 'Marc',
age: 21
}
// Serialize the object into a JSON string
storage.set('user', JSON.stringify(user))
// Deserialize the JSON string into an object
const jsonUser = storage.getString('user') // { 'username': 'Marc', 'age': 21 }
const userObject = JSON.parse(jsonUser)
加密
// encrypt all data with a private key
storage.recrypt('hunter2')
// remove encryption
storage.recrypt(undefined)
缓冲
const buffer = new ArrayBuffer(3)
const dataWriter = new Uint8Array(buffer)
dataWriter[0] = 1
dataWriter[1] = 100
dataWriter[2] = 255
storage.set('someToken', buffer)
const buffer = storage.getBuffer('someToken')
console.log(buffer) // [1, 100, 255]
大小
// get size of MMKV storage in bytes
const size = storage.size
if (size >= 4096) {
// clean unused keys and clear memory cache
storage.trim()
}
用 Jest 或 Vitest 进行测试
在使用 Jest 或 Vitest 测试时会自动使用被嘲笑的 MMKV 实例, 这样您就可以使用 new MMKV() 按照正常的测试。 参见 软件包/实例/测试/MMKV.ts 以杰斯特为例.
文档
- 钩子
- 价值变化
- 从AsyncStorage 移动
- 使用带有再加速度的 MMKV
- 使用带有后坐力的MMKV
- 使用 MMKV 和 暴徒- 持久性存储器
- 使用 MMKV 有暴徒- 持久性
- 使用带有 zustand 持久中件的 MMKV
- 使用带Jotai的 MMKV
- 使用 MMKV 反应- 平滑
- 这个图书馆有什么不同 反应-内生- mmkv- 存储? 吗?
本地存储和记忆存储(网络)
如果用户选择在浏览器中禁用localStorage,库会自动提供有限的内存存储作为替代. 然而,这种内存存储不会持续数据,用户如果刷新页面或关闭浏览器,可能会经历数据丢失. 为了优化用户体验,考虑在您的应用中执行一个合适的解决方案来解决这个情景.
限制
- 反应-内生-mmkv V3需要反应-内生-0.74或更高.
- 反应- 内生- mmkv V3 需要 新结构/ TurboModules 启用 .
- 由于反应-内生-mmkv使用JSI进行同步本地方法引用,远程调试(如与Chrome)已不再可能. 相反,你应该使用 翻转 或者说 反应 DevTools。 。 。 .
一体化
翻转
使用 翻转-插件-反应-内置式-mmkv 使用 Flipper 调试您的 MMKV 存储器 。 你也可以简单 console.log 一个MMKV的例子.
重装
使用 反应-反应-内生- mmkv 以自动日志写入您的 MMKV 存储中. 如何用 Reactotron 设置此插件, 请查看文件 .
社区迪斯科尔
加入Margelo社区迪斯科尔 以聊天方式讨论反应- native-mmkv 或其他 Margelo 库.
采用规模
提供了反应-内生- mmkv 一样我在闲暇时间工作.
如果你正在将反应-原生-mmkv整合到生产应用中,请考虑 资助这一项目 财务报告和审定财务报表 联系我 以获得溢价企业支持,帮助解决问题,优先处理错误修正,请求特性,帮助整合反应-内置-mmkv,等等.
捐款
见 贡献指南 学习如何为储存库和发展工作流程作出贡献.
许可证
麻省理工学院