# @bsky\.app/react-native-mmkv 中文文档

规范地址：https://npmcn.com/package/%40bsky.app/react-native-mmkv/

版本：2\.12\.5
npm 元数据更新时间：2026-03-04T17:04:50.725Z
中文译文更新时间：2026-11-08T17:18:43.551Z
软件包许可：\(MIT AND BSD-3-Clause\)

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40bsky.app/react-native-mmkv
原文对照：https://npmcn.com/package/%40bsky.app/react-native-mmkv/?lang=original
项目主页：https://github.com/bluesky-social/react-native-mmkv#readme
源码仓库：https://github.com/bluesky-social/react-native-mmkv

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：3.3 MB，156 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- 运行依赖：0 个
- peer 依赖：react \*，react-native \>=0\.71\.0
- 首次发布：2025-10-07T10:10:43.318Z
- 最新版本发布：2025-10-07T10:20:28.576Z
- 近 30 天下载量：25920（2026-10-09 至 2026-11-07，npm 官方下载统计）
- 已发布版本数：2（近 12 个月 0 个）

## 中文简介

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

## 安装

```sh
npm install @bsky.app/react-native-mmkv
```

也可以使用：`pnpm add @bsky.app/react-native-mmkv`、`yarn add @bsky.app/react-native-mmkv`、`bun add @bsky.app/react-native-mmkv`

## README

# 这是叉子 `mrousavy/react-native-mmkv`

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

变化 :

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

原文如下:

* * *

[![VisionCamera](https://npmcn.com/package/%40bsky.app/react-native-mmkv/img/banner-light.png)](https://margelo.io/)

# 缩略语:MMKV

### React Natural 的快捷键/值存储 .

[![](https://img.shields.io/github/followers/mrousavy?label=Follow%20%40mrousavy&style=social)](https://github.com/mrousavy?tab=followers)  
[![](https://img.shields.io/twitter/follow/mrousavy?label=Follow%20%40mrousavy&style=social)](https://twitter.com/mrousavy)  
[![This library helped you? Consider sponsoring!](https://npmcn.com/package/%40bsky.app/react-native-mmkv/.github/funding-octocat.svg)](https://github.com/sponsors/mrousavy)

  

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

## 特征

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

## 发起人

[![](https://theme.zdassets.com/theme_assets/9442057/efc3820e436f9150bc8cf34267fff4df052a1f9c.png)](https://getstream.io/chat/react-native-chat/tutorial/?utm_source=Github&utm_medium=Github_Repo_Content_Ad&utm_content=Developer&utm_campaign=Github_Jan2022_ReactNative&utm_term=react-native-mmkv)

反应-内生-mmkv由 **(原始内容存档于2013-10-12). getstream.io**。 。 。 .  
[尝试回放原声聊天教程 {}](https://getstream.io/chat/react-native-chat/tutorial/?utm_source=Github&utm_medium=Github_Repo_Content_Ad&utm_content=Developer&utm_campaign=Github_Jan2022_ReactNative&utm_term=react-native-mmkv)

## 基准

[存储奔驰](https://github.com/mrousavy/StorageBenchmark) 比较流行的存储库, 通过读取存储值 1000 次 :

[![](https://npmcn.com/package/%40bsky.app/react-native-mmkv/img/benchmark_1000_get.png)](https://github.com/mrousavy/StorageBenchmark)

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

## 安装

### 原生反应

```sh
yarn add react-native-mmkv
cd ios && pod install
```

### 博览

```sh
npx expo install react-native-mmkv
npx expo prebuild
```

## 使用量

### 创建新实例

要创建 MMKV 存储的新实例, 请使用 `MMKV` 建筑师。 建议您在整个应用程序中重新使用这个实例,而不是每次创建一个新的实例,所以 `export` 页:1 `storage` 对象.

#### 默认

```js
import { MMKV } from 'react-native-mmkv'

export const storage = new MMKV()
```

使用默认的 MMKV 存储 ID () 创建新的存储实例`mmkv.default`) (中文(简体) ).

#### App 组

如果您想要在您的应用程序和其他应用程序或应用程序扩展名之间共享 MMKV 数据, 请打开 `Info.plist` 创建 `AppGroup` 键,包含您的应用程序组值。 MMKV随后会自动将数据存储在应用组内,通过使用MMKV的多处理模式,从同一组中的其他应用或应用扩展读取并写入. 见 [配置应用组](https://developer.apple.com/documentation/xcode/configuring-app-groups)。 。 。 .

#### 自定义

```js
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 存储您的应用程序中分离 .

下列值可以配置 :

-   `id`MMKV案的身份证 如果你想使用多个实例,请使用不同的ID. 例如,您可以将全球应用程序的存储器和登录用户的存储器分开. (如果 `path` 或者说 `encryptionKey` 字段,否则默认为: `'mmkv.default'`(中文(简体) )
-   `path`: MMKV实例的根道. 默认情况下, MMKV 在内部存储文件 `$(Documents)/mmkv/`您可以在 MMKV 初始化上自定义 MMKV 的根目录(文档 : [iOS系统](https://github.com/Tencent/MMKV/wiki/iOS_advance#customize-location) 编号 : [机器人](https://github.com/Tencent/MMKV/wiki/android_advance#customize-location)(中文(简体) )
-   `encryptionKey`: MMKV实例的加密/解密密钥. 默认情况下,MMKV将所有的密钥值以纯文本存储在文件中,依靠iOS/Android的沙盒来确保文件被加密. 如果您担心信息泄露, 您可以选择加密 MMKV 。 (文件: [iOS系统](https://github.com/Tencent/MMKV/wiki/iOS_advance#encryption) 编号 : [机器人](https://github.com/Tencent/MMKV/wiki/android_advance#encryption)(中文(简体) )

### 设定

```js
storage.set('user.name', 'Marc')
storage.set('user.age', 21)
storage.set('is-mmkv-fast-asf', true)
```

### 获取

```js
const username = storage.getString('user.name') // 'Marc'
const age = storage.getNumber('user.age') // 21
const isMmkvFastAsf = storage.getBoolean('is-mmkv-fast-asf') // true
```

### 密钥

```js
// 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()
```

### 对象

```js
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)
```

### 加密

```js
// encrypt all data with a private key
storage.recrypt('hunter2')

// remove encryption
storage.recrypt(undefined)
```

### 缓冲

```js
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](https://npmcn.com/package/%40bsky.app/react-native-mmkv/example/test/MMKV.test.ts) 举个例子.

## 文档

-   [钩子](https://npmcn.com/package/%40bsky.app/react-native-mmkv/docs/HOOKS.md)
-   [价值变化](https://npmcn.com/package/%40bsky.app/react-native-mmkv/docs/LISTENERS.md)
-   [从AsyncStorage 移动](https://npmcn.com/package/%40bsky.app/react-native-mmkv/docs/MIGRATE_FROM_ASYNC_STORAGE.md)
-   [使用带有再加速度的 MMKV](https://npmcn.com/package/%40bsky.app/react-native-mmkv/docs/WRAPPER_REDUX.md)
-   [使用带有后坐力的MMKV](https://npmcn.com/package/%40bsky.app/react-native-mmkv/docs/WRAPPER_RECOIL.md)
-   [使用 MMKV 和 暴徒- 持久性存储器](https://npmcn.com/package/%40bsky.app/react-native-mmkv/docs/WRAPPER_MOBX.md)
-   [使用 MMKV 有暴徒- 持久性](https://npmcn.com/package/%40bsky.app/react-native-mmkv/docs/WRAPPER_MOBXPERSIST.md)
-   [使用带有 zustand 持久中件的 MMKV](https://npmcn.com/package/%40bsky.app/react-native-mmkv/docs/WRAPPER_ZUSTAND_PERSIST_MIDDLEWARE.md)
-   [使用带Jotai的 MMKV](https://npmcn.com/package/%40bsky.app/react-native-mmkv/docs/WRAPPER_JOTAI.md)
-   [使用 MMKV 反应- 平滑](https://npmcn.com/package/%40bsky.app/react-native-mmkv/docs/WRAPPER_REACT_QUERY.md)
-   [这个图书馆有什么不同 **反应-内生- mmkv- 存储**? 吗?](https://github.com/mrousavy/react-native-mmkv/issues/100#issuecomment-886477361)

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

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

## 限制

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

### 翻转

使用 [翻转-插件-反应-内置式-mmkv](https://github.com/muchobien/flipper-plugin-react-native-mmkv) 使用 Flipper 调试您的 MMKV 存储器 。 你也可以简单 `console.log` 一个MMKV的例子.

### 重装

使用 [反应-反应-内生- mmkv](https://www.npmjs.com/package/reactotron-react-native-mmkv) 以自动日志写入您的 MMKV 存储中. [如何用 Reactotron 设置此插件, 请查看文件 .](https://www.npmjs.com/package/reactotron-react-native-mmkv)

## 社区迪斯科尔

[**加入Margelo社区迪斯科尔**](https://discord.gg/6CSHz2qAvA) 以聊天方式讨论反应- native-mmkv 或其他 Margelo 库.

## 采用规模

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

如果你正在将反应-原生-mmkv整合到生产应用中,请考虑 [资助这一项目](https://github.com/sponsors/mrousavy) 财务报告和审定财务报表 [联系我](mailto:me@mrousavy.com?subject=Adopting%20react-native-mmkv%20at%20scale) 以获得溢价企业支持,帮助解决问题,优先处理错误修正,请求特性,帮助整合反应-内置-mmkv,等等.

## 捐款

见 [贡献指南](https://npmcn.com/package/%40bsky.app/react-native-mmkv/CONTRIBUTING.md) 学习如何为储存库和发展工作流程作出贡献.

## 许可证

麻省理工学院

## 常见问题

### @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 和提交记录判断。

