Publicado em: 03/05/2024

Como Usar Async Storage? | Jancer


Neste tutorial, vamos explorar o uso do Async Storage, uma solução simples e eficiente para armazenamento persistente de dados em aplicativos React Native com Expo.

Instalação e Configuração

Primeiro, instale o pacote usando o comando:

npx expo install @react-native-async-storage/async-storage

O Async Storage é um sistema de armazenamento chave-valor assíncrono com as seguintes características:

  • Android: Usa SQLite com limite de 6MB totais e 2MB por item
  • iOS: Usa arquivos codificados sem limitação explícita de tamanho
  • Dados persistem mesmo após fechar o aplicativo
  • Funciona tanto em desenvolvimento quanto em produção

Operações Básicas

Vamos criar três funções essenciais para manipulação dos dados:

1. Salvando Dados

1const saveItem = async (value: string) => {
2 try {
3 await AsyncStorage.setItem('minhaChave', value);
4 console.log('Item salvo com sucesso!');
5 } catch (error) {
6 console.error('Erro ao salvar:', error);
7 }

2. Lendo Dados

1const getItem = async () => {
2 try {
3 const value = await AsyncStorage.getItem('minhaChave');
4 if (value !== null) {
5 alert(`Valor lido: ${value}`);
6 } else {
7 alert('Nenhum valor encontrado');
8 }
9 } catch (error) {
10 console.error('Erro ao ler:', error);
11 }

3. Removendo Dados

1const removeItem = async () => {
2 try {
3 await AsyncStorage.removeItem('minhaChave');
4 console.log('Item removido com sucesso!');
5 } catch (error) {
6 console.error('Erro ao remover:', error);
7 }

Trabalhando com Objetos

Para armazenar objetos, precisamos converter para string JSON:

1const saveObject = async (obj: object) => {
2 try {
3 const jsonValue = JSON.stringify(obj);
4 await AsyncStorage.setItem('meuObjeto', jsonValue);
5 } catch (error) {
6 console.error(error);
7 }
8 };
9 const getObject = async () => {
10 try {
11 const jsonValue = await AsyncStorage.getItem('meuObjeto');
12 return jsonValue != null ? JSON.parse(jsonValue) : null;
13 } catch (error) {
14 console.error(error);
15 }

Operações Avançadas

Merge de Objetos

O Async Storage permite combinar objetos armazenados:

1const mergeObjects = async () => {
2 try {
3 const obj1 = { chave: 'valor' };
4 const obj2 = { nome: 'Janer' };
5 await AsyncStorage.setItem('objeto', JSON.stringify(obj1));
6 await AsyncStorage.mergeItem('objeto', JSON.stringify(obj2));
7 const result = await AsyncStorage.getItem('objeto');
8 console.log(JSON.parse(result)); // { chave: 'valor', nome: 'Janer' }
9 } catch (error) {
10 console.error(error);
11 }

Múltiplas Operações

1// Multi-set
2 await AsyncStorage.multiSet([
3 ['chave1', 'valor1'],
4 ['chave2', 'valor2']
5 ]);
6 // Multi-get
7 const values = await AsyncStorage.multiGet(['chave1', 'chave2']);

Considerações Finais

O Async Storage é uma excelente opção para:

  • Armazenar preferências do usuário
  • Manter dados de sessão
  • Cache de informações

Porém, tenha em mente que:

  • Não é adequado para dados sensíveis (use Secure Storage)
  • Tem limitações de tamanho no Android
  • Dados podem ser apagados pelo sistema em situações de baixo armazenamento

Para aplicações mais complexas, considere usar bancos de dados como SQLite ou soluções como Realm.

últimos vídeos

veja nossos vídeos mais recentes e esteja por dentro de muitas novidades.