@bsky.app/react-native-mmkv

中文文档
2.12.5发布于 2025/10/07(MIT AND BSD-3-Clause)TypeScriptESM + CJS零依赖近 30 天下载 2.6万

React Industrial 的快捷键/值存储. ~30x比 AsyncStorage 更快! 在Android,iOS和Web上工作.

中文使用文档
文档目录25 节
  1. React Natural 的快捷键/值存储 .
  2. 特征
  3. 发起人
  4. 基准
  5. 安装
  6. 原生反应
  7. 博览
  8. 使用量
  9. 创建新实例
  10. 设定
  11. 获取
  12. 密钥
  13. 对象
  14. 加密
  15. 缓冲
  16. 用 Jest 进行测试
  17. 文档
  18. 本地存储和记忆存储(网络)
  19. 限制
  20. 翻转
  21. 重装
  22. 社区迪斯科尔
  23. 采用规模
  24. 捐款
  25. 许可证

这是叉子 mrousavy/react-native-mmkv

此分叉为未保存的 2.x 版本添加了 16kb 页面大小支持 react-native-mmkv目前我们被困在旧建筑上.

变化 :

  • 更新了 MMKV 到最近1.3 LTS 版本, 增加了 16kb 页面大小支持
  • 添加了要编译的旗帜 reactnativemmkv.so 有 16kb 页面大小支持

原文如下:


VisionCamera

缩略语:MMKV

React Natural 的快捷键/值存储 .


  • 缩略语:MMKV 是WeChat开发的高效而小型的移动密钥值存储框架. 见 10分/米克瓦 更多信息
  • 反应-内生-mmkv 是允许您轻松使用的库 缩略语:MMKV 在您的本地反应应用程序中 。 它为本地的 C++ 库提供快速而直接的装订,通过简单的JS API可以访问.

特征

  • 获取 财务报告和审定财务报表 设定 字符串、布尔和数字
  • 完全同步 电话,没有自动/等待, 没有承诺,没有桥.
  • 加密 支持(安全存储)
  • 多个实例 支持(将用户数据与全球数据分开)
  • 自定义存储位置
  • 业绩好 因为一切 以 C++ 写
  • ~30x 速度快于 AsyncStorage
  • 用途 司法独立协会 而不是"老"桥
  • iOS系统, (中文(简体) ), 机器人 财务报告和审定财务报表 网页 支助
  • 易于使用 反应钩 API 密码

发起人

反应-内生-mmkv由 (原始内容存档于2013-10-12). getstream.io。 。 。 .
尝试回放原声聊天教程 {}

基准

存储奔驰 比较流行的存储库, 通过读取存储值 1000 次 :

MMKV 与其他存储库: 从存储器读取值 1000 次 .
在iPhone 11 Pro上用毫秒测量,更下等.

安装

原生反应

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 } from 'react-native-mmkv'

export const storage = new MMKV({
  id: `user-${userId}-storage`,
  path: `${USER_DIRECTORY}/storage`,
  encryptionKey: 'hunter2'
})

这使用自定义的 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系统 编号 : 机器人(中文(简体) )

设定

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

密钥

// 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)

缓冲

storage.set('someToken', new Uint8Array([1, 100, 255]))
const buffer = storage.getBuffer('someToken')
console.log(buffer) // [1, 100, 255]

用 Jest 进行测试

与 Jest 测试时会自动使用被嘲笑的 MMKV 实例, 这样您就可以使用 new MMKV() 按照正常的测试。 参见 实例/测试/MMKV.test.ts 举个例子.

文档

本地存储和记忆存储(网络)

如果用户选择在浏览器中禁用localStorage,库会自动提供有限的内存存储作为替代. 然而,这种内存存储不会持续数据,用户如果刷新页面或关闭浏览器,可能会经历数据丢失. 为了优化用户体验,考虑在您的应用中执行一个合适的解决方案来解决这个情景.

限制

由于库中使用JSI进行同步本地方法访问,远程调试(如与Chrome)已不再可能. 相反,你应该使用 翻转。 。 。 .

翻转

使用 翻转-插件-反应-内置式-mmkv 使用 Flipper 调试您的 MMKV 存储器 。 你也可以简单 console.log 一个MMKV的例子.

重装

使用 反应-反应-内生- mmkv 以自动日志写入您的 MMKV 存储中. 如何用 Reactotron 设置此插件, 请查看文件 .

社区迪斯科尔

加入Margelo社区迪斯科尔 以聊天方式讨论反应- native-mmkv 或其他 Margelo 库.

采用规模

提供了反应-内生- mmkv 一样我在闲暇时间工作.

如果你正在将反应-原生-mmkv整合到生产应用中,请考虑 资助这一项目 财务报告和审定财务报表 联系我 以获得溢价企业支持,帮助解决问题,优先处理错误修正,请求特性,帮助整合反应-内置-mmkv,等等.

捐款

见 贡献指南 学习如何为储存库和发展工作流程作出贡献.

许可证

麻省理工学院

版本与发布记录

@bsky.app/react-native-mmkv 共发布 2 个版本,首次发布于 2025/10/07;过去 12 个月发布了 0 个版本。

版本发布日期距今
2.12.5latest2025/10/071.1 年前
2.12.42025/10/071.1 年前

关于 @bsky.app/react-native-mmkv 的常见问题

@bsky.app/react-native-mmkv 是什么?

React Industrial 的快捷键/值存储. ~30x比 AsyncStorage 更快! 在Android,iOS和Web上工作.

如何安装 @bsky.app/react-native-mmkv?

在项目目录运行 npm install @bsky.app/react-native-mmkv,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:react(*)、react-native(>=0.71.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@bsky.app/react-native-mmkv 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@bsky.app/react-native-mmkv 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@bsky.app/react-native-mmkv 可以商用吗?

@bsky.app/react-native-mmkv 使用 (MIT AND BSD-3-Clause) 许可。声明的许可为 (MIT AND BSD-3-Clause),请阅读许可原文确认使用条件。以上为概括,不构成法律意见,请以许可原文为准。

@bsky.app/react-native-mmkv 的下载量有多少?

根据 npm 官方下载统计,@bsky.app/react-native-mmkv 在 2026/10/09 – 2026/11/07 这 30 天内被下载 25,920 次,日均约 864 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@bsky.app/react-native-mmkv 还在维护吗?

最新版本 2.12.5 发布于 2025/10/07(1.1 年前);至今共发布 2 个版本,其中过去 12 个月发布了 0 个;首次发布于 2025/10/07。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。