在React Native Expo中缓存JSON数据:适用技术/包咨询
在React Native Expo中缓存JSON数据的可行方案
1. Expo AsyncStorage(官方内置)
- 这是Expo原生自带的轻量键值存储工具,专门用来存JSON这类结构化小数据,不用额外装包
- 基础用法:
- 导入:
import AsyncStorage from '@react-native-async-storage/async-storage'; - 存数据:先把JSON对象转成字符串,
await AsyncStorage.setItem('user_profile', JSON.stringify(userInfo)); - 取数据:
const rawData = await AsyncStorage.getItem('user_profile'); const parsedData = JSON.parse(rawData); - 注意:单条数据建议不超64KB,总存储别碰5MB上限,适合存用户偏好、小配置这类数据
- 导入:
2. Expo SecureStore(加密存储)
- 如果你的JSON包含敏感内容(比如登录凭证、隐私信息),用这个准没错——它会自动加密存储数据,比AsyncStorage更安全
- 基础用法:
- 导入:
import * as SecureStore from 'expo-secure-store'; - 存数据:
await SecureStore.setItemAsync('user_token', JSON.stringify(tokenData)); - 取数据:
const rawData = await SecureStore.getItemAsync('user_token'); const parsedData = JSON.parse(rawData); - 注意:同样适合小数据,不同平台的加密逻辑Expo已经封装好了,不用自己折腾
- 导入:
3. MMKV(高性能大容量存储)
- 腾讯开发的高性能键值存储库,比AsyncStorage快好几倍,支持更大的数据量,Expo环境直接能用适配包
- 基础用法:
- 安装:
npx expo install react-native-mmkv - 初始化:
import { MMKV } from 'react-native-mmkv'; const storage = new MMKV(); - 存数据:
storage.set('app_cache', JSON.stringify(largeDataset)); - 取数据:
const rawData = storage.getString('app_cache'); const parsedData = JSON.parse(rawData); - 优势:读写速度快,支持多实例隔离存储,存储限制宽松,适合存中等偏大的JSON缓存(比如列表数据、离线内容)
- 安装:
4. Expo FileSystem(文件级存储)
- 要是你需要存超大JSON(比如几十MB的离线数据),直接把JSON写成文件存在本地更靠谱
- 基础用法:
- 导入:
import * as FileSystem from 'expo-file-system'; - 定义存储路径:
const cacheFileUri = FileSystem.documentDirectory + 'big_cache.json'; - 写文件:
await FileSystem.writeAsStringAsync(cacheFileUri, JSON.stringify(hugeJsonData)); - 读文件:
const rawData = await FileSystem.readAsStringAsync(cacheFileUri); const parsedData = JSON.parse(rawData); - 可以用FileSystem的缓存目录来存临时数据,不用的时候直接清空目录,避免占用永久存储空间
- 导入:
内容的提问来源于stack exchange,提问作者lacaci3709
相关产品推荐
相关产品推荐

