AsyncStorage
AsyncStorage — это асинхронное, неблокирующее хранилище данных «ключ-значение», встроенное в экосистему React Native через отдельный пакет. Оно предназначено для хранения небольших объёмов данных на устройстве пользователя между сессиями приложения. В отличие от браузерного localStorage, AsyncStorage работает на уровне нативного кода (через iOS UserDefaults и Android SharedPreferences), но предоставляет простой JavaScript-интерфейс.
Для использования необходимо установить пакет:
npm install @react-native-async-storage/async-storage
После установки основные операции выполняются через три метода:
setItem(key: string, value: string)— сохраняет строковое значение по указанному ключу.getItem(key: string)— возвращает строку, сохранённую по ключу, илиnull, если ключ не найден.removeItem(key: string)— удаляет значение по ключу.
Важно: AsyncStorage принимает только строки. Чтобы сохранить объект, его нужно сериализовать с помощью JSON.stringify(), а при чтении — десериализовать через JSON.parse().
Пример сохранения и чтения настроек темы:
import AsyncStorage from '@react-native-async-storage/async-storage';
const saveTheme = async (theme: 'light' | 'dark') => {
await AsyncStorage.setItem('app_theme', theme);
};
const loadTheme = async (): Promise<'light' | 'dark' | null> => {
const theme = await AsyncStorage.getItem('app_theme');
return theme as 'light' | 'dark' | null;
};
Ограничения AsyncStorage:
- Максимальный объём данных — около 6 МБ (зависит от платформы).
- Нет поддержки запросов, индексов или транзакций.
- Не подходит для хранения чувствительных данных (например, паролей) без дополнительного шифрования.
Несмотря на ограничения, AsyncStorage идеально подходит для хранения токенов авторизации, пользовательских предпочтений, флагов онбординга и других лёгких данных, необходимых для работы приложения в офлайн-режиме.