You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Native中如何存储用户Token?原Android开发用SharedPreference求跨端方案

React Native中替代SharedPreference的跨端存储方案

嘿,当然有啦!作为从Android转React Native的开发者,我太懂你想要找一个类似SharedPreference的跨端存储方案的需求了。下面给你推荐几个成熟的、支持iOS和Android双端的方案,都是我实际项目里用过的:

1. AsyncStorage(社区维护的官方级方案)

这是最接近SharedPreference的选择,本质是键值对存储,专门用来保存轻量数据(比如Token、用户偏好设置),完全支持双端。现在它已经从React Native核心库移到了社区维护的包中,用法和之前的核心库版本几乎一致。

用法示例:

// 先安装依赖
// npm install @react-native-async-storage/async-storage
// 或者 yarn add @react-native-async-storage/async-storage

import AsyncStorage from '@react-native-async-storage/async-storage';

// 存储用户Token
const saveUserToken = async (token) => {
  try {
    await AsyncStorage.setItem('user_token', token);
    console.log('Token存储成功');
  } catch (error) {
    // 处理存储失败的情况,比如上报日志
    console.error('存储Token出错:', error);
  }
};

// 获取用户Token
const getUserToken = async () => {
  try {
    const token = await AsyncStorage.getItem('user_token');
    if (token) {
      // Token存在,返回使用
      return token;
    }
  } catch (error) {
    console.error('获取Token出错:', error);
  }
  return null;
};

它的异步设计不会阻塞主线程,和SharedPreference的使用场景完全匹配,适合大多数轻量存储需求。

2. MMKV(高性能同步存储方案)

如果你对存储性能有更高要求(比如频繁读写数据),那MMKV绝对是更好的选择。它是腾讯开发的高性能键值存储库,支持同步操作,速度比AsyncStorage快很多,同样支持双端。

用法示例:

// 安装依赖
// npm install react-native-mmkv
// 或者 yarn add react-native-mmkv

import { MMKV } from 'react-native-mmkv';

// 初始化一个存储实例
const storage = new MMKV();

// 存储Token(同步操作,无需async/await)
storage.set('user_token', 'your_jwt_token_here');

// 获取Token
const token = storage.getString('user_token');

// 删除Token
storage.delete('user_token');

MMKV的同步API让代码更简洁,而且性能优势明显,现在很多React Native项目都已经用它替代AsyncStorage了。

3. SecureStore(Expo专属的安全存储方案)

如果你的项目是基于Expo开发的,并且Token属于敏感数据,那SecureStore是最佳选择。它会利用系统级的安全存储机制:Android上使用Keystore,iOS上使用Keychain,对数据进行加密存储,比普通存储更安全。

用法示例:

// Expo项目无需额外安装,直接导入使用
import * as SecureStore from 'expo-secure-store';

// 存储敏感Token
const saveSecureToken = async (token) => {
  await SecureStore.setItemAsync('secure_user_token', token);
};

// 获取敏感Token
const getSecureToken = async () => {
  const token = await SecureStore.getItemAsync('secure_user_token');
  return token;
};

如果你的Token涉及用户隐私或安全相关操作,优先考虑这个方案。


内容的提问来源于stack exchange,提问作者PuskarShestha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:22:16