ReactNative实现本地存储localStorage功能

24 阅读1分钟

下载@react-native-async-storage/async-storage

pnpm add @react-native-async-storage/async-storage

封装函数

/* 本地存储 */
import AsyncStorage from '@react-native-async-storage/async-storage'

// 1. 存储数据(对应 localStorage.setItem)
export const setStorage = async (key: string, value: any) => {
  try {
    // 统一转为字符串存储(如对象需 JSON 序列化)
    const stringValue =
      typeof value === 'object' ? JSON.stringify(value) : String(value)
    await AsyncStorage.setItem(key, stringValue)
    return true
  } catch (error) {
    console.error('存储失败:', error)
    return false
  }
}

// 2. 获取数据(对应 localStorage.getItem)
export const getStorage = async (key: string) => {
  try {
    const value = await AsyncStorage.getItem(key)
    if (value === null) return null // 无数据返回 null
    // 尝试解析 JSON(兼容对象/数组),失败则返回原始字符串
    try {
      return JSON.parse(value)
    } catch (e) {
      return value
    }
  } catch (error) {
    console.error('获取失败:', error)
    return null
  }
}

// 3. 删除数据(对应 localStorage.removeItem)
export const removeStorage = async (key: string) => {
  try {
    await AsyncStorage.removeItem(key)
    return true
  } catch (error) {
    console.error('删除失败:', error)
    return false
  }
}

// 4. 清空所有数据(对应 localStorage.clear)
export const clearStorage = async () => {
  try {
    await AsyncStorage.clear()
    return true
  } catch (error) {
    console.error('清空失败:', error)
    return false
  }
}