React Native Academy · Aula

Navegando entre telas e passando parâmetros

Use navigation.navigate para passar de uma tela a outra, passe parâmetros no segundo argumento e leia-os com route.params na tela de destino.

Aula 2 de 413 etapas

Navegando entre telas e passando parâmetros é uma aula grátis de React Native Academy no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de React Native Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de React Native Academy inclui 4 aulas no total.

A propriedade navigation nas telas

Todo componente registrado como uma tela em um navegador do React Navigation recebe automaticamente a propriedade navigation. Esse objeto fornece métodos para passar de uma tela para outra, voltar e gerenciar a pilha de navegação. Você também pode acessá-lo em componentes aninhados usando o gancho useNavigation.

function HomeScreen({ navigation }) {
  // navigation.navigate, navigation.goBack, etc.
  return <View />;
}

Navegando com navigation.navigate

Chame navigation.navigate('ScreenName') para passar para outra tela. Se a tela já estiver na pilha e você navegar até ela novamente, o React Navigation irá para a instância existente em vez de adicionar uma duplicata. Use navigation.push('ScreenName') para sempre adicionar uma nova instância.

function HomeScreen({ navigation }) {
  return (
    <Button
      title='Go to Details'
      onPress={() => navigation.navigate('Details')}
    />
  );
}

Voltando com navigation.goBack

Chame navigation.goBack() para retirar a tela atual da pilha e voltar à anterior. No iOS, o gesto de deslizar para voltar vem ativado por padrão. No Android, o botão Voltar físico chama goBack automaticamente. Use navigation.popToTop() para voltar diretamente à primeira tela.

function DetailsScreen({ navigation }) {
  return (
    <Button
      title='Go Back'
      onPress={() => navigation.goBack()}
    />
  );
}

Passando parâmetros durante a navegação

Passe um segundo argumento para navigation.navigate a fim de enviar parâmetros à tela de destino. O objeto de parâmetros pode conter qualquer dado serializável — IDs, textos e valores booleanos. Evite passar objetos complexos não serializáveis, como instâncias de classes ou funções.

function HomeScreen({ navigation }) {
  return (
    <Button
      title='View Post'
      onPress={() =>
        navigation.navigate('Details', {
          postId: 42,
          title: 'React Navigation Deep Dive',
        })
      }
    />
  );
}

Lendo parâmetros com route.params

A tela de destino recebe uma propriedade route junto com a propriedade navigation. Acesse os parâmetros enviados por meio de route.params. Sempre forneça valores padrão caso uma tela seja aberta sem parâmetros, por exemplo, quando for a tela inicial.

function DetailsScreen({ route, navigation }) {
  const { postId, title } = route.params ?? {};
  return (
    <View>
      <Text>Post ID: {postId}</Text>
      <Text>Title: {title}</Text>
    </View>
  );
}

Parâmetros padrão em Stack.Screen

Defina initialParams em um Stack.Screen para fornecer valores de parâmetros padrão. Esses valores padrão são combinados com quaisquer parâmetros enviados durante a execução, para que a tela sempre tenha um conjunto completo de valores com os quais trabalhar, mesmo quando for aberta como a rota inicial.

<Stack.Screen
  name='Details'
  component={DetailsScreen}
  initialParams={{ postId: 0, title: 'Unknown' }}
/>

Atualizando parâmetros em uma tela

Uma tela pode atualizar seus próprios parâmetros usando navigation.setParams. Isso é útil quando uma ação na tela atual, como editar um campo de formulário, deve ser refletida no título do cabeçalho de navegação. A atualização dos parâmetros aciona uma nova renderização da tela.

function DetailsScreen({ route, navigation }) {
  const { title } = route.params;

  return (
    <Button
      title='Update Title'
      onPress={() => navigation.setParams({ title: 'Updated Title' })}
    />
  );
}

Usando o gancho useNavigation

Componentes filhos profundos que não são telas registradas não recebem automaticamente a propriedade navigation. Use o gancho useNavigation() do React Navigation para acessar o objeto de navegação em qualquer lugar dentro da árvore de navegadores, sem precisar repassar propriedades por vários níveis.

import { useNavigation } from '@react-navigation/native';

function MyButton() {
  const navigation = useNavigation();
  return (
    <Button
      title='Go to Profile'
      onPress={() => navigation.navigate('Profile')}
    />
  );
}

Usando o gancho useRoute

Da mesma forma, use o gancho useRoute() para acessar route.params em um componente que não seja uma tela. Isso é útil quando você tem um componente profundamente aninhado que precisa ler os parâmetros da tela atual sem repassar a propriedade route por todos os níveis.

import { useRoute } from '@react-navigation/native';

function PostHeader() {
  const route = useRoute();
  const { title } = route.params ?? {};
  return <Text style={{ fontWeight: 'bold' }}>{title}</Text>;
}

Definindo o título do cabeçalho a partir dos parâmetros

Você pode definir dinamicamente o título do cabeçalho de navegação com base nos parâmetros da rota, passando uma função para a propriedade options. A função recebe o objeto route, permitindo usar os valores dos parâmetros como título da tela sem precisar de um estado adicional.

<Stack.Screen
  name='Details'
  component={DetailsScreen}
  options={({ route }) => ({ title: route.params.title ?? 'Details' })}
/>

Voltando e enviando dados de volta

Para enviar dados de uma tela filha de volta à tela pai, use navigation.navigate com o nome da tela pai e inclua os dados de retorno como parâmetros. A tela pai receberá os parâmetros atualizados. Como alternativa, passe uma função de retorno de chamada como parâmetro para a tela filha e chame-a antes de voltar.

// In child screen
navigation.navigate('Home', { selectedItem: 'apple' });

// In parent screen — read route.params.selectedItem

Verificação rápida

Teste sua compreensão da navegação entre telas e dos parâmetros do React Navigation apresentados nesta lição.

Recapitulação da lição

Nesta lição, você aprendeu a: usar navigation.navigate para passar para outra tela, passar parâmetros como segundo argumento de navigate e ler parâmetros com route.params na tela de destino. A seguir, exploraremos o navegador de abas inferiores.

Grátis para começar

Aprenda JavaScript com um tutor de IA — grátis

Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.

Cursos
30
Aulas
120

Perguntas Frequentes

A aula “Navegando entre telas e passando parâmetros” é grátis?

Sim — o texto completo de “Navegando entre telas e passando parâmetros” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de React Native Academy, atualize para CoddyKit PRO. O curso de React Native Academy inclui 4 aulas no total.

O que vou aprender em “Navegando entre telas e passando parâmetros”?

Use navigation.navigate para passar de uma tela a outra, passe parâmetros no segundo argumento e leia-os com route.params na tela de destino. Você pratica React Native Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar React Native Academy?

Nenhuma experiência prévia é necessária. React Native Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.

Quanto tempo leva a aula “Navegando entre telas e passando parâmetros”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de React Native Academy?

Sim. Cada aula de React Native Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Instalando e configurando o React Navigation
  2. Navegando entre telas e passando parâmetros
  3. Navegador de abas inferiores
  4. Navegador lateral e navegadores aninhados
← Voltar para React Native Academy