Publicado em: 17/03/2025

Au 11 - Mobile - React Native - Comunicando com o backend - Mestres BEGIN


Objetivo da Aula

Estabelecer a comunicação com o backend para:

  • Buscar e exibir produtos em tela
  • Criar componentes para estados vazios e preenchidos
  • Preparar a base para futura estilização

Componentes Principais

1// Estrutura de componentes
2ProductsScreen
3├── ProductList (Lista de produtos)
4└── EmptyList (Estado vazio)

Integração com Backend

Uso do useEffect para busca inicial:

1const [products, setProducts] = useState<Product[]>([]);
2const [loading, setLoading] = useState(true);
3useEffect(() => {
4  const fetchProducts = async () => {
5    try {
6      const response = await api.get("/products");
7      setProducts(response.data);
8    } catch (error) {
9      console.error("Erro ao buscar produtos:", error);
10    } finally {
11      setLoading(false);
12    }
13  };
14  fetchProducts();
15}, []);

Renderização Condicional

Lógica para exibir conteúdo apropriado:

1if (loading) {
2  return <ActivityIndicator size="large" />;
3}
4if (products.length === 0) {
5  return <EmptyList onAddProduct={handleOpenModal} />;
6}
7return <ProductList products={products} />;

Componente EmptyList

1interface EmptyListProps {
2  onAddProduct: () => void;
3}
4const EmptyList = ({ onAddProduct }: EmptyListProps) => (
5  <View>
6    <Text>Nenhum produto cadastrado</Text>
7    <Button 
8      title="Adicionar Produto" 
9      onPress={onAddProduct} 
10    />
11  </View>
12);

Testes com Estado

Simulação de recarregamento:

1const [refresh, setRefresh] = useState(false);
2// Botão para testes
3<Button 
4  title="Recarregar" 
5  onPress={() => setRefresh(!refresh)} 
6/>
7// useEffect com dependência
8useEffect(() => {
9  // Busca produtos
10}, [refresh]);

Conceitos Fundamentais

useEffect

  • Para operações assíncronas (fetch, setTimeout)
  • Lista de dependências controla a execução
  • [] = executa apenas no mount

useState

  • Gerenciamento de estado local
  • Atualizações disparam re-render
  • Estado inicial define tipo

Considerações Finais

Esta implementação demonstra:

  • Padrões básicos de comunicação com APIs
  • Gerenciamento de estado com Hooks
  • Renderização condicional eficiente
Fernando Cunha
Artigo deFernando Cunha

Com mais de 15 anos de experiência em tecnologia e formado pela FAAP em Administração de empresas, hoje é o CEO da Mestres da Web, empresa referência no mercado nacional e com projeções de expansão internacional.

últimos vídeos

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

Au 02 - Front-end - React - Estrutura de projeto - Mestres BEGIN
play

Au 02 - Front-end - React - Estrutura de projeto - Mestres BEGIN

Explorando a estrutura gerada pelo Create React App, entendendo o papel das pastas public e src, os conceitos de Virtual DOM, JSX e componentes, além de como o CSS é aplicado nos projetos React.

Autor deste artigo
Fernando Cunha17/03/2025
Au 03 - Front-end - React - Criando layout da nossa aplicação - Mestres BEGIN
play

Au 03 - Front-end - React - Criando layout da nossa aplicação - Mestres BEGIN

Explorando a criação de um layout fixo para a aplicação React, com barra lateral, barra superior e área dinâmica para conteúdo. Utilizando o React Router Dom v6 para gerenciar navegação entre rotas.

Autor deste artigo
Fernando Cunha17/03/2025
Au 04 - Front-end - React - Estilizando o layout da aplicação - Mestres BEGIN
play

Au 04 - Front-end - React - Estilizando o layout da aplicação - Mestres BEGIN

Abordando técnicas para organizar estilos em React, utilizando seletores CSS, CSS Modules, integração com React Router, reset CSS eficiente e boas práticas para garantir consistência visual e manutenibilidade.

Autor deste artigo
Fernando Cunha17/03/2025