Como conectar React Native com uma API Node.js

Um dos pontos mais importantes no desenvolvimento mobile é a comunicação entre o aplicativo e o servidor. Neste artigo, vou mostrar passo a passo como integrar um app React Native a uma API criada em Node.js com Express.

1. Criando a API Node.js

Vamos começar criando um servidor básico com Express:

npm init -y
npm install express cors

// server.js
const express = require('express');
const cors = require('cors');
const app = express();
app.use(cors());
app.use(express.json());

const dados = [
  { id: 1, nome: 'Douglas', cidade: 'Andradina' },
  { id: 2, nome: 'Maria', cidade: 'Araçatuba' }
];

app.get('/usuarios', (req, res) => res.json(dados));

app.listen(3000, () => console.log('API rodando em http://localhost:3000'));

Agora, a rota /usuarios retorna um JSON que o aplicativo poderá consumir.

2. Criando o app React Native

No Expo, crie um novo projeto e instale o Axios:

npx create-expo-app meuApp
cd meuApp
npm install axios

Agora, edite o App.js:

import axios from 'axios';
import { useEffect, useState } from 'react';
import { View, Text, FlatList } from 'react-native';

export default function App() {
  const [usuarios, setUsuarios] = useState([]);

  useEffect(() => {
    axios.get('http://192.168.0.10:3000/usuarios') // IP da sua máquina
      .then(res => setUsuarios(res.data))
      .catch(err => console.log(err));
  }, []);

  return (
    <View style={{ padding: 20 }}>
      <Text style={{ fontSize: 20, fontWeight: 'bold' }}>Usuários</Text>
      <FlatList
        data={usuarios}
        keyExtractor={item => item.id.toString()}
        renderItem={({ item }) => (
          <Text>{item.nome} - {item.cidade}</Text>
        )}
      />
    </View>
  );
}

3. Testando a comunicação

Com o servidor Node rodando (node server.js) e o app no Expo, você verá os nomes e cidades sendo exibidos em tempo real. Isso mostra que o app e o backend estão se comunicando corretamente.

4. Boas práticas e segurança

Conclusão

A integração entre React Native e Node.js é poderosa e simples quando bem estruturada. Com esse padrão, você pode escalar seu app, incluir autenticação, persistência de dados e até notificação em tempo real.