Aprenda React Native: guia completo para 2025

Rocketseat

Navegação Rápida:
O que é React Native?
1Como o React Native funciona?
2Preparando o terreno: configurando o ambiente.
3Criando o nosso primeiro projeto.
4Abrindo o projeto no editor de código.
5Limpando o terreno.
6Componentes e estilização: dando vida ao app.
7Executando o app: a mágica acontece!
8Debugger: desvendando os mistérios do código.
9Componentes customizados: reutilização é a chave!
10Criando o componente
11Componente
12Navegação (Expo Router): indo além!
13Conclusão: sua jornada React Native começou!
14
Fala, dev! Quer aprender a desenvolver aplicativos para Android e iOS usando React Native? Neste guia completo, você vai conhecer o passo a passo para iniciar no desenvolvimento mobile e entender como essa tecnologia pode impulsionar sua carreira.
Vamos utilizar o Expo, um framework que facilita o processo de criação de aplicativos, permitindo que você se concentre no aprendizado prático e no desenvolvimento de projetos reais.
Eu sou Rodrigo Gonçalves, Head de Educação na Rocketseat. Vamos juntos explorar o universo do desenvolvimento mobile e dar o primeiro passo para impulsionar sua jornada como desenvolvedor(a).

O que é React Native?
Imagine criar aplicativos nativos para Android e iOS usando apenas JavaScript (e TypeScript, que a gente super recomenda!). Essa é a mágica do React Native! ✨
Com ele, você:
- Cria apps para duas plataformas com um único código: adeus, retrabalho! 👋
- Acelera o desenvolvimento: o famoso time-to-market agradece! ⏱️
- Reaproveita código: componentes são como peças de LEGO, podemos usar as mesmas peças, mas construir infinitas possibilidades. 😉
- Conta com uma comunidade gigante: precisa de ajuda? Tem sempre alguém disposto! 💪
- Segue os passos de gigantes: Facebook, Microsoft, Discord... todos usam React Native! 🏆
Se você já tem familiaridade com desenvolvimento web (HTML, CSS e JavaScript), vai se sentir em casa! A lógica é muito parecida, o que torna a curva de aprendizado bem mais suave. Se você não tem, fique tranquilo que até o final desse artigo, eu vou te apresentar opções para você sair do zero e de forma gratuita! 😊

Como o React Native funciona?
Sabe aquela história de "escrever uma vez, rodar em qualquer lugar"? O React Native leva isso a sério! Você cria interfaces de forma declarativa, usando componentes como
View
, Image
e Text
. Eles são como blocos de montar que representam elementos visuais.Quando o app é executado, esses componentes são traduzidos para seus equivalentes nativos em cada plataforma. Ou seja, uma
View
vira uma ViewGroup
no Android e uma UIView
no iOS. O resultado? Performance nativa! 🚀A componentização é outro ponto forte. Em vez de criar 30 botões iguais, você cria um só e reaproveita. Precisou mudar a cor? Altera em um único lugar e voilà! ✨ Produtividade e manutenção fácil? Temos! ✅

Preparando o terreno: configurando o ambiente.
Antes de começar a codar, precisamos preparar o nosso ambiente de desenvolvimento. Mas calma, não precisa ter medo! Vamos usar o Expo Managed Workflow, que é super simples para iniciantes.
Você vai precisar:
- Node.js: instale a versão LTS. É rapidinho!
- Um editor de código: recomendamos o VS Code, mas você pode usar o seu preferido.
- Um celular (Android ou iOS) ou um emulador: para testar o app.
Dica: se você usa Windows ou Linux e tem um iPhone, use o Expo Go! É um app que permite rodar o seu projeto diretamente no celular, sem precisar de cabo. 😉
Link para o passo a passo oficial da Rocketseat (em português, para facilitar!)
Pause este artigo agora, clique no link em uma nova aba e configure o seu ambiente. É rapidinho e vai fazer toda a diferença!
Criando o nosso primeiro projeto.
Agora sim, vamos começar a brincadeira! Abra o seu terminal e digite:
npx create-expo-app --template
Opções aparecerão para você selecionar qual template usar, e então escolha:
Navigation (TypeScript)
Agora é só escolher o nome do app:
my-first-app
O que esse comando faz?
npx
: executa um pacote do npm sem precisar instalar globalmente.
create-expo-app
: cria um novo projeto Expo.
navigation
: usa um template com navegação (Expo Router) e TypeScript.
my-first-app
: o nome do seu projeto (pode ser outro, claro!).
Depois de alguns segundos (ou minutos, dependendo da sua conexão com a internet 😉), o
create-expo-app
terminará de criar o seu projeto.Abrindo o projeto no editor de código.
Abra a pasta do projeto no seu editor de código favorito. Recomendamos o VS Code, que é leve, poderoso e tem ótimas extensões para React Native.

Vamos dar uma olhada rápida no que foi criado?
node_modules/
: aqui ficam todas as bibliotecas (pacotes) que o seu projeto usa. Você não deve mexer diretamente nos arquivos dentro desta pasta. O próprio npm (ou yarn) cuida de gerenciá-los.
app/
: esta pasta é muito importante! É aqui que o Expo Router (o sistema de navegação) vai procurar as rotas do seu aplicativo. Cada arquivo.tsx
(ou.js
) dentro deapp/
(e suas subpastas) representa uma tela do seu app. Já vem umindex.tsx
(ou similar) criado por padrão.
assets/
: aqui você coloca imagens, fontes e outros arquivos estáticos que o seu app vai usar.
components/
: essa pasta pode não existir inicialmente, dependendo do template. Recomendamos fortemente que você crie essa pasta para organizar os seus componentes reutilizáveis (botões, inputs, etc.).
constants/
: essa pasta pode não existir inicialmente, dependendo do template. Recomendamos fortemente que você crie essa pasta caso queira manter informações que se repetem.
.gitignore
: este arquivo diz ao Git (sistema de controle de versão) quais arquivos e pastas ele deve ignorar (ou seja, não enviar para o repositório online, como o GitHub).node_modules/
sempre deve estar aqui, pois é muito grande e pode ser recriada facilmente.
app.json
: aqui ficam as configurações do seu app: nome, ícone, versão, configurações para Android, iOS, web, etc.
package.json
: este arquivo lista as dependências do seu projeto (as bibliotecas que ele usa) e define scripts úteis (como o comando para iniciar o app).
package-lock.json
: arquivo gerado automaticamente, que fixa a versão das dependências.
tsconfig.json
: configurações do TypeScript (se você estiver usando TypeScript – e nós recomendamos que use!).
Limpando o terreno.
Antes de começar a desenvolver seu app, é fundamental ter um ambiente limpo e organizado. Por isso, vamos remover alguns diretórios criados automaticamente que contêm arquivos de exemplo e que podem causar conflitos com a nova estrutura que iremos implementar. Essa limpeza facilitará a manutenção e o entendimento do projeto, especialmente para quem está começando.
Passos para a limpeza:
- Remova a pasta
app/
e todo o seu conteúdo original:
Essa pasta foi gerada automaticamente, mas vamos recriá-la de forma organizada mais adiante dentro da nova estrutura.
- Dentro da pasta assets/, apague apenas a pasta fonts/ e todo o seu conteúdo original:
Assim, eliminamos exemplos de fontes que não serão utilizados no desenvolvimento do seu aplicativo.
- Exclua a pasta
components/
e todo o seu conteúdo original:
Posteriormente, criaremos uma nova pasta para os nossos componentes customizados, organizada dentro da estrutura principal.
- Elimine a pasta
constants/
e todo o seu conteúdo original:
Essa remoção também visa evitar possíveis conflitos e preparar o ambiente para uma organização mais clara.
Depois de apagar essas pastas, a estrutura do seu projeto ficará semelhante à imagem abaixo. Os ícones e cores podem variar um pouco dependendo do seu editor de código e das extensões que você tem instaladas.

Componentes e estilização: dando vida ao app.
Agora que temos a estrutura básica do projeto pronta, vamos começar a construir a interface do nosso aplicativo. E para manter tudo organizado, vamos criar uma pasta chamada
src
(de source, ou "código-fonte") na raiz do projeto. Essa pasta vai abrigar todo o código que nós escrevermos, separando-o dos arquivos de configuração do Expo.Dentro de
src
, crie uma pasta chamada app
. É aqui que, a partir de agora, vamos colocar os arquivos que representam as telas (ou rotas) do nosso aplicativo.Nosso primeiro componente:
Dentro da pasta
src/app/
, crie um arquivo chamado index.tsx
. Este será o ponto de partida, a tela inicial do nosso app.// src/app/index.tsx import React from 'react'; import { View, Text, StyleSheet } from 'react-native'; export default function Home() { return ( <View style={styles.container}> <Text style={styles.title}>Olá, Rocketseat!</Text> </View> ); } const styles = StyleSheet.create({ container: { flex: 1, justifyContent: 'center', alignItems: 'center', padding: 32, }, title: { fontSize: 24, fontWeight: 'bold', color: '#67159C', // Um roxo da Rocketseat! 😉 }, });
O que esse código faz?
- Importa
View
,Text
eStyleSheet
do React Native.
- Cria um componente
Home
(uma função que retorna JSX).
View
: um container (como umadiv
no HTML).
Text
: exibe um texto.
StyleSheet.create
: cria um objeto de estilos (organização!).
style
: aplica os estilos aos componentes.
- Regras CSS:
camelCase
: em vez defont-size
, usamosfontSize
.flexbox
: já vem ativado por padrão! 🎉- Unidades: não precisa de
px
(o React Native usa densidade independente de pixel).

Executando o app: a mágica acontece!
Agora que você já escreveu o seu primeiro componente React Native, chegou a hora de vê-lo em ação!
No terminal, certifique-se de que você está dentro da pasta do projeto (
my-first-app
, ou o nome que você escolheu). Se não estiver, navegue até lá usando o comando cd nome-da-pasta
.Dentro da pasta do projeto, digite o seguinte comando e pressione enter:
npx expo start
Este comando inicia o servidor de desenvolvimento do Expo. Você verá um menu com várias opções no terminal, e um QR code será gerado.
Abrindo o app no emulador/simulador:
- iOS: pressione a tecla
i
no terminal. Isso abrirá o app no simulador iOS (se você estiver usando um Mac e tiver o Xcode instalado).
- Android: pressione a tecla
a
no terminal. Isso abrirá o app no emulador Android (se você tiver o Android Studio configurado).
- Web: pressione a tecla
w
no terminal. Isso abrirá o app em uma aba do seu navegador.
Abrindo o app no seu celular (dispositivo físico):
- Instale o app Expo Go: procure por "Expo Go" na App Store (iOS) ou Google Play Store (Android) e instale o aplicativo.
- Escaneie o QR Code: abra o Expo Go no seu celular e use a opção de escanear o QR code. Aponte a câmera para o QR code que apareceu no seu terminal.
- Conexão na mesma rede: certifique-se de que o seu celular e o seu computador estejam conectados à mesma rede Wi-Fi.
Se tudo correr bem, você verá a tela do seu aplicativo com a mensagem "Olá, Rocketseat!" centralizada, como na imagem abaixo:

Debugger: desvendando os mistérios do código.
Precisa descobrir por que algo não está funcionando? Use o debugger!
console.log
: exiba mensagens no terminal.
- Breakpoints: pause a execução em pontos específicos do código para inspecionar variáveis. (Aperte
j
no terminal para abrir o debugger no navegador).
Componentes customizados: reutilização é a chave!
Agora que você já criou seu primeiro componente (
Home
), vamos dar um passo além e aprender a criar componentes customizados. A grande vantagem de criar seus próprios componentes é a reutilização de código. Em vez de repetir o mesmo código várias vezes, você cria um componente uma única vez e o reutiliza em diferentes partes do seu aplicativo. É como construir com peças de LEGO: você monta as peças básicas e depois as combina para criar estruturas mais complexas.Organizando o código: a pasta components
Para manter o nosso projeto organizado, vamos criar uma pasta chamada
components
dentro da pasta src
. É aqui que vamos guardar todos os nossos componentes customizados.Criando o componente Button
Vamos começar criando um componente
Button
(botão). Ele será um botão estilizado que poderemos usar em várias telas do nosso app.Dentro da pasta
components
, crie uma nova pasta chamada Button
(com "B" maiúsculo, por convenção). Dentro da pasta Button
, crie dois arquivos:index.tsx
: este arquivo conterá a estrutura do nosso componente (o que ele é e como ele se comporta).
styles.ts
: este arquivo conterá os estilos do nosso componente (como ele aparece).
Essa separação entre estrutura e estilo é uma boa prática para manter o código organizado e fácil de manter.
Abra o arquivo
src/components/Button/index.tsx
e cole o seguinte código:// src/components/Button/index.tsx import React from 'react'; import { TouchableOpacity, Text } from 'react-native'; // 1. Importações import { styles } from './styles'; // 2. Importa os estilos interface ButtonProps { // 3. Define as Props title: string; onPress: () => void; } export function Button({ title, onPress, ...rest }: ButtonProps) { // 4. Componente Button return ( <TouchableOpacity style={styles.button} onPress={onPress} {...rest}> <Text style={styles.buttonText}>{title}</Text> </TouchableOpacity> ); }
Abra o arquivo
src/components/Button/styles.ts
e cole o seguinte código:// src/components/Button/styles.ts import { StyleSheet } from 'react-native'; export const styles = StyleSheet.create({ button: { backgroundColor: '#67159C', // Roxo da Rocketseat! borderRadius: 8, paddingVertical: 12, paddingHorizontal: 24, alignItems: 'center', }, buttonText: { color: '#FFFFFF', fontSize: 16, fontWeight: 'bold', }, });
O que esse código faz?
Vamos analisar o código passo a passo:
index.tsx
:
- Importações:
React
: a biblioteca React (essencial).TouchableOpacity
,Text
: componentes do React Native.TouchableOpacity
é um componente que torna qualquer coisa "clicável", com um efeito visual de opacidade quando tocado.styles
: importa os estilos definidos no arquivostyles.ts
.
interface ButtonProps
:- Isso define as props (propriedades) que o nosso componente
Button
pode receber. É como dizer: "para usar este botão, você precisa me dizer otitle
(texto do botão) e oonPress
(o que acontece quando o botão é pressionado)." title: string
: o texto do botão (uma string).onPress: () => void
: a função que será executada quando o botão for pressionado.() => void
significa "uma função que não recebe nenhum argumento e não retorna nada".
export function Button(...)
:- Define o componente
Button
como uma função. { title, onPress, ...rest }: ButtonProps
: recebe as props.title
eonPress
são as props que definimos nainterface
....rest
: é um operador especial chamado rest operator. Ele pega todas as outras props que forem passadas para o componente, mas que não foram explicitamente listadas (comotitle
eonPress
).
return (...)
:- Retorna o JSX que define a estrutura do componente.
<TouchableOpacity ...>
: o componente principal.style={styles.button}
: aplica os estilos definidos emstyles.ts
.onPress={onPress}
: define o que acontece quando o botão é pressionado (executa a funçãoonPress
que foi passada como prop).{...rest}
: aplica todas as outras props que foram passadas para o componenteButton
diretamente noTouchableOpacity
. Isso é útil para, por exemplo, passar propriedades de acessibilidade.<Text style={styles.buttonText}>{title}</Text>
: Exibe o texto do botão (a proptitle
), com os estilos definidos.
styles.ts
:
import { StyleSheet } from 'react-native';
: importa oStyleSheet
do React Native.
export const styles = StyleSheet.create(...)
: cria um objetostyles
com os estilos do componente. Oexport
permite que a gente importe esses estilos em outros arquivos.
button
: estilos para oTouchableOpacity
.
buttonText
: estilos para oText
.
Usando o componente Button
Agora que você criou o componente
Button
, vamos usá-lo na tela inicial do nosso app (src/app/index.tsx
):// src/app/index.tsx import React from 'react'; import { View, Text, StyleSheet } from 'react-native'; import { Button } from '../components/Button'; // 1. Importa o componente Button export default function Home() { return ( <View style={styles.container}> <Text style={styles.title}>Olá, Rocketseat!</Text> <Button title="Entrar" onPress={() => alert('Clicou!')} /> {/* 2. Usa o componente Button */} </View> ); } const styles = StyleSheet.create({ container: { backgroundColor: '#19181F', flex: 1, justifyContent: 'center', alignItems: 'center', padding: 32, }, title: { fontSize: 24, marginBottom: 20, fontWeight: 'bold', color: '#67159C', // Um roxo da Rocketseat! 😉 }, });
O que mudou?
import { Button } from '../components/Button';
: importamos o nosso componenteButton
.
<Button title="Entrar" onPress={() => alert('Clicou!')} />
: usamos o componenteButton
como se fosse uma tag HTML.title="Entrar"
: passamos o texto do botão ("Entrar") como a proptitle
.onPress={() => alert('Clicou!')}
: passamos uma função que exibe um alerta quando o botão é pressionado.
Com isso, você criou seu primeiro componente customizado, reutilizável e estilizado! 🚀 No próximo passo, vamos aprender como criar um componente para inserir texto (um input).
Componente Input
: coletando dados do usuário.
Depois de criar um botão, que tal um campo de texto para o usuário digitar? Vamos criar um componente
Input
para isso!Siga a mesma estrutura que usamos para o
Button
:- Dentro da pasta
src/components/
, crie uma nova pasta chamadaInput
.
- Dentro da pasta
Input
, crie dois arquivos: index.tsx
(estrutura do componente)styles.ts
(estilos do componente)
src/components/Input/index.tsx
:// src/components/Input/index.tsx import React from 'react'; import { TextInput, TextInputProps } from 'react-native'; import { styles } from './styles'; export function Input({ ...rest }: TextInputProps) { return ( <TextInput style={styles.input} placeholderTextColor="#999999" // Cor do placeholder {...rest} /> ); }
src/components/Input/styles.ts
:// src/components/Input/styles.ts import { StyleSheet } from 'react-native'; export const styles = StyleSheet.create({ input: { width: '100%', height: 52, backgroundColor: '#121214', // Cor de fundo escura borderRadius: 10, padding: 12, fontSize: 16, borderWidth: 1, margin: 20, color: '#FFFFFF', // Cor do texto digitado }, });
Explicação do código do Input
:
Vamos analisar o código passo a passo:
index.tsx
:
TextInput
: componente do React Native para entrada de texto.
TextInputProps
: a tipagem das propriedades doTextInput
. Usamos isso para ter autocompletar e evitar erros.
{...rest}
: repassamos todas as propriedades que forem recebidas pelo nosso componenteInput
diretamente para oTextInput
do React Native. Isso inclui coisas comoplaceholder
,onChangeText
,value
,keyboardType
, etc.
placeholderTextColor="#999999"
: adicionamos uma cor cinza claro para o texto do placeholder (aquele texto que aparece antes do usuário digitar).
styles.ts
:
- Estilos para deixar o
Input
com a cara da Rocketseat! 😉 Usamos cores escuras e uma borda roxa.
Usando o Input
e o useState
(estado):
Agora, vamos voltar ao nosso arquivo
src/app/index.tsx
e usar o componente Input
que acabamos de criar. E é aqui que a mágica do estado entra em cena!// src/app/index.tsx import React, { useState } from 'react'; import { View, Text, StyleSheet } from 'react-native'; import { Button } from '../components/Button'; import { Input } from '../components/Input'; export default function Home() { const [name, setName] = useState(''); return ( <View style={styles.container}> <Text style={styles.title}>Olá, {name}!</Text> <Input placeholder="Digite seu nome" onChangeText={setName} /> <Button title="Entrar" onPress={() => alert(`Olá, ${name}!`)} /> </View> ); } const styles = StyleSheet.create({ container: { backgroundColor: '#19181F', flex: 1, justifyContent: 'center', alignItems: 'center', padding: 32, }, title: { fontSize: 24, fontWeight: 'bold', color: '#453467', }, });
Com isso, você aprendeu um dos conceitos mais importantes do React (e React Native): o estado! Ele é fundamental para criar aplicativos interativos e dinâmicos, que respondem às ações do usuário.
![Imagem estática mostrando o aplicativo React Native. Um campo de texto (Input) com o placeholder “Digite seu nome”. Conforme o usuário digita, o texto “Olá, [nome digitado]” acima do input é atualizado em tempo real. Abaixo do input, há um botão com o texto “Entrar”.](https://www.notion.so/image/attachment%3A35e9ca2b-d88f-48c9-b7c3-9a88336dd50a%3A1fc7d6bb-7fff-4e94-971f-66c5d5072a9d.png?table=block&id=19e395da-5770-80ed-8c4f-f74f9dc5b3a4&cache=v2)
Agora que já temos um app interativo, que tal dar um passo além e aprender a navegar entre diferentes telas? No próximo tópico, vamos explorar o Expo Router e criar uma estrutura de navegação para o nosso aplicativo!
Navegação (Expo Router): indo além!
Até agora, nosso app tem apenas uma tela. Mas, na maioria dos casos, você vai precisar de várias telas: uma tela inicial, uma tela de configurações, uma tela de perfil, e assim por diante. É aí que entra a navegação!
Vamos usar o Expo Router, uma ferramenta poderosa e fácil de usar que já vem incluída no template que escolhemos. O Expo Router usa uma abordagem de navegação baseada em arquivos: cada arquivo
.tsx
(ou .js
) dentro da pasta src/app/
(e suas subpastas) automaticamente se torna uma rota (uma tela) do seu aplicativo.Criando a tela dashboard.tsx
Vamos criar uma nova tela chamada "Dashboard".
- Dentro da pasta
src/app/
, crie um novo arquivo chamadodashboard.tsx
.
- Cole o seguinte código dentro de
dashboard.tsx
:
// src/app/dashboard.tsx import React from 'react'; import { View, Text, StyleSheet } from 'react-native'; import { Button } from '../components/Button'; // Importa o nosso componente Button import { useRouter } from 'expo-router'; // Importa o useRouter export default function Dashboard() { const router = useRouter(); // Inicializa o useRouter return ( <View style={styles.container}> <Text style={styles.title}>Dashboard</Text> <Button title="Voltar" onPress={() => router.back()} /> </View> ); } const styles = StyleSheet.create({ container: { flex: 1, justifyContent: 'center', alignItems: 'center', padding: 32, }, title: { fontSize: 24, fontWeight: 'bold', marginBottom: 24, // Adiciona um espaço abaixo do título }, });
O que esse código faz?
import { useRouter } from 'expo-router';
: importa o HookuseRouter
do Expo Router. Hooks são funções especiais que nos permitem usar recursos do React (e de bibliotecas como o Expo Router) dentro de componentes funcionais.
const router = useRouter();
: "inicializa" ouseRouter
. Isso nos dá acesso a um objetorouter
que contém funções para navegar entre as telas.
<Button title="Voltar" onPress={() => router.back()} />
:- Usamos o nosso componente
Button
. onPress={() => router.back()}
: quando o botão "Voltar" é pressionado, chamamos a funçãorouter.back()
. Essa função faz exatamente o que o nome diz: volta para a tela anterior.
Navegando para a tela dashboard
:
Agora, vamos modificar o nosso arquivo
src/app/index.tsx
para que, quando o usuário clique no botão "Entrar", ele seja redirecionado para a tela dashboard
.// src/app/index.tsx import React, { useState } from 'react'; import { View, Text, StyleSheet } from 'react-native'; import { Button } from '../components/Button'; import { Input } from '../components/Input'; import { useRouter } from 'expo-router'; // <-- Importe o useRouter aqui também export default function Home() { const [name, setName] = useState(''); const router = useRouter(); // <-- Inicialize o useRouter return ( <View style={styles.container}> <Text style={styles.title}>Olá, {name}!</Text> <Input placeholder="Digite seu nome" onChangeText={setName} /> <Button title="Entrar" onPress={() => { if (name.trim() !== '') { // Verifica se o nome foi preenchido router.push('/dashboard'); // Navega para /dashboard } else { alert('Por favor, digite seu nome!'); // Exibe um alerta se o nome estiver vazio } }} /> </View> ); } const styles = StyleSheet.create({ container: { flex: 1, justifyContent: 'center', alignItems: 'center', padding: 32, }, title: { fontSize: 24, fontWeight: 'bold', color: '#453467', }, });
Explicação das mudanças em index.tsx
:
import { useRouter } from 'expo-router';
: importamos ouseRouter
também no componenteHome
.
const router = useRouter();
: inicializamos ouseRouter
.
onPress
do botão "Entrar":- Agora, em vez de simplesmente exibir um alerta, a função
onPress
faz o seguinte: if (name.trim() !== '')
: verifica se o usuário digitou alguma coisa no campo de nome.name.trim()
remove espaços em branco do início e do fim do nome, para evitar que o usuário navegue com um nome vazio.router.push('/dashboard');
: se o nome não estiver vazio, usamosrouter.push('/dashboard')
para navegar para a teladashboard
. Note que usamos/dashboard
como o caminho – o Expo Router mapeia isso automaticamente para o arquivosrc/app/dashboard.tsx
. O método.push()
empilha as telas.else { alert('...'); }
: se o nome estiver vazio, exibimos um alerta pedindo para o usuário digitar o nome.

Testando a navegação:
- Salve todos os arquivos modificados (
index.tsx
edashboard.tsx
).
- Se o Hot Reloading não atualizar o app automaticamente, reinicie o servidor Expo (Ctrl+C e
npx expo start
).
- Digite seu nome no campo de texto.
- Clique no botão "Entrar".
- Você deverá ser redirecionado para a tela "Dashboard"!
- Clique no botão "Voltar" para retornar à tela inicial.
Conclusão: sua jornada React Native começou!
Parabéns! Você deu seus primeiros passos no mundo do desenvolvimento mobile com React Native e Expo. Neste guia completo, você aprendeu:
- O que é React Native e por que ele é tão incrível.
- Como configurar seu ambiente de desenvolvimento.
- Como criar seu primeiro projeto e executar o app.
- Como criar e estilizar componentes.
- Como usar o estado para tornar seu app interativo.
- Como implementar navegação entre telas com o Expo Router.
Mas isso é só o começo! O React Native tem muito mais a oferecer. Agora, é hora de colocar a mão na massa, criar seus próprios projetos e continuar aprendendo.
Próximos passos:
- Explore a documentação oficial: o site do React Native e a documentação do Expo são fontes riquíssimas de informação.
- Participe da comunidade: junte-se à comunidade da Rocketseat no Discord para trocar ideias, tirar dúvidas e aprender com outros devs.
- Faça o curso gratuito: comece agora mesmo a dominar os fundamentos com o Minicurso de React Native da Rocketseat!
- Conheça a formação React Native: quer se tornar um especialista? A formação React Native da Rocketseat te leva do zero ao app publicado, com mais de 118 horas de conteúdo e certificado!
Explodiu sua mente?! 🤯 Então compartilhe este artigo com aquele amigo ou amiga que também quer dominar o React Native! E ó: a jornada só está começando! Corra para a comunidade da Rocketseat no Discord, tire suas dúvidas, troque ideias com outros devs apaixonados e continue aprendendo com a gente!
Eu sei que, às vezes, mesmo com o guia mais detalhado, as coisas podem dar errado. Por isso, para garantir que você não fique travado(a), preparei um vídeo completo lá no meu canal, mostrando um conteúdo semelhante. Às vezes, ver o código sendo feito "ao vivo" ajuda a clarear as coisas. É só dar o play e bora codar junto!

Artigos_
Explore conteúdos relacionados
Descubra mais artigos que complementam seu aprendizado e expandem seu conhecimento.