Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

ERRO: The 'navigation' object hasn't been initialized yet.

Estou criando a navegação entre telas, como nas aulas, e estou utilizando para o meu contexto o método de stack. Porém, quando clico no botão em questão, recebo este erro.

Já instalei o "@react-navigation/stack": "^6.3.20",

Criei um arquivo de rotas:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

E aqui é a página principal que contém os botões que levam para as outras páginas, ao serem clicados:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

E meu App.js

Insira aqui a descrição dessa imagem para ajudar na acessibilidadeSerá que o erro está se dando por conta das funções handleExibirRegistro e handleExibirLogin? Eu havia criado elas para não exibir o botão registro quando estiver na página de login, e o botão de login quando estiver na página de cadastro, não sei se tem outra forma, mas foi a única que encontrei. De qualquer forma, elas nem estão sendo usadas no momento.

Podem me auxiliar nesta parte? Não é o mesmo app das aulas. É um app que estou desenvolvendo, meu mesmo...

2 respostas
solução!

E aí, Vanessa!

O Stack Navigator é que nem o chefão das telas e da navegação. Não precisa ficar criando uns estados separados pra decidir se mostra a tela de Registro ou a de Login. O próprio Stack Navigator faz isso pra você, sacou?

Dá uma olhada nesse pitaco pra ajustar seu código:

  1. No App.js, bota o componente InicialRoutes que você fez, que já tem as manhas do Stack Navigator. Não precisa mais desses estados exibirRegistro e exibirLogin aqui.
import React from 'react';
import { StatusBar, SafeAreaView } from 'react-native';
import { NavigationContainer } from '@react-navigation/native';
import InicialRoutes from './routes/InicialRoutes'; // Importa teu componente de rotas

export default function App() {
  return (
    <SafeAreaView style={{ flex: 1 }}>
      <StatusBar />
      <NavigationContainer>
        <InicialRoutes /> {/* Usa o componente de rotas aqui */}
      </NavigationContainer>
    </SafeAreaView>
  );
}

No Principal.js, cê tá usando o useNavigation() certo pra pegar o objeto de navegação. Só confirma que os nomes das rotas batem exatamente com os nomes que cê definiu no Stack Navigator no InicialRoutes.js.

Garante que os nomes das rotas no navigation.navigate() casem certinho com os nomes que você colocou no Stack Navigator. Tipo, se tem um <Stack.Screen name="Home" component={Home} />, cê usa navigation.navigate('Home') pra chegar nessa tela.

Se fizer essas mudanças e ainda der erro, dá um conferes pra ver se todas as dependências tão instaladas de boa e se tá importando os componentes certinho em cada arquivo.

Oi, Estudante (rs)

Pitacos são bem vindos, rs Eu bem recente na programação e alguns erros me deixam de cabelo branco. Eu vou fazer esse ajuste e ver se roda certinho.

Virei a internet de ponta cabeça pra resolver e ainda não consegui.

Obrigada pelas sugestões. Qualquer coisa atualizo aqui. Valeu...