Consumir APIs React Native: Conectando seu App ao Mundo

Até agora, todos os dados que exibimos em nossos apps estavam “chumbados” no código. Mas, na vida real, os dados mudam o tempo todo: o preço do dólar, a previsão do tempo ou as postagens de uma rede social. Para acessar essas informações, precisamos Consumir APIs React Native e para isso usamos as APIs (Application Programming Interfaces).

➡️ Código Base

➡️ API Base (Dados Públicos)

1. O que é uma API?

Imagine que você está em um restaurante.

  • Você é o Cliente (o App).
  • A cozinha é o Servidor (onde os dados estão).
  • O garçom é a API.

Você faz um pedido (requisição), o garçom leva até a cozinha e traz o seu prato (os dados) de volta. No desenvolvimento mobile, o formato mais comum para esse “prato” de dados é o JSON.

2. O comando Fetch e o Ciclo de Vida

Para buscar dados, o JavaScript nos oferece o comando fetch(). Como a internet pode ser lenta, essa operação é assíncrona. Isso significa que o app faz o pedido e continua funcionando enquanto espera a resposta, evitando que a tela trave.

Usaremos dois conceitos que já vimos:

  • useState: Para guardar os dados que chegarem da internet.
  • useEffect: Um novo Hook que serve para disparar a busca assim que o app abre.

3. Prática de Laboratório: Buscando Usuários Reais

Vamos consumir uma API gratuita de testes chamada JSONPlaceholder para listar nomes de usuários em nossa FlatList.

JavaScript

Prompt Sugerido (Toque para selecionar)
import React, { useState, useEffect } from 'react'; import { View, Text, FlatList, StyleSheet, ActivityIndicator } from 'react-native';export default function AppApi() { const [usuarios, setUsuarios] = useState([]); const [carregando, setCarregando] = useState(true);// Função para buscar os dados const obterDados = async () => { try { const resposta = await fetch('https://jsonplaceholder.typicode.com/users'); const dados = await resposta.json(); setUsuarios(dados); // Guarda os dados no estado } catch (erro) { console.error("Erro ao buscar dados: ", erro); } finally { setCarregando(false); // Para de mostrar o ícone de carregamento } };// Executa a função assim que o componente é montado useEffect(() => { obterDados(); }, []);if (carregando) { return ( <View style={estilos.centralizado}> <ActivityIndicator size="large" color="#6200ee" /> <Text>Buscando dados na nuvem...</Text> </View> ); }return ( <View style={estilos.container}> <Text style={estilos.titulo}>Usuários da API</Text> <FlatList data={usuarios} keyExtractor={(item) => item.id.toString()} renderItem={({ item }) => ( <View style={estilos.cartao}> <Text style={estilos.nome}>{item.name}</Text> <Text style={estilos.email}>{item.email}</Text> </View> )} /> </View> ); }const estilos = StyleSheet.create({ container: { flex: 1, backgroundColor: '#f0f0f0', paddingTop: 50 }, centralizado: { flex: 1, justifyContent: 'center', alignItems: 'center' }, titulo: { fontSize: 22, fontWeight: 'bold', textAlign: 'center', marginBottom: 20 }, cartao: { backgroundColor: '#fff', padding: 15, marginHorizontal: 20, marginBottom: 10, borderRadius: 8, elevation: 3 }, nome: { fontSize: 18, fontWeight: 'bold' }, email: { color: '#666' } });

🧠 Pensamento Analítico: O que acontece se a internet cair?

No código acima, usamos o bloco try/catch. Desafio: Como você avisaria o usuário, de forma visual, que houve um erro na conexão? (Dica: Use um estado chamado erro e mostre uma mensagem caso ele seja verdadeiro).


⬅️ Artigo Anterior: Trabalhando com Listas: O poder da FlatList

➡️ Próximo Passo: Acessando o Hardware: Usando a Câmera do Celular

Compartilhe:

Profissional engajado com as últimas tendências tecnológicas e de gestão, buscando continuamente aprimorar suas competências e compartilhar seu conhecimento.

Publicar comentário

Vale a pena conferir