1
resposta

erro com o navigation.navigate('')

Boa noite, minha dpuvida não condiz com o projeto da aula. Estou desenvolvendo um app para o meu TG, só que encontrei um problema que não acho de jeito nenhum e queria ver se vocês poderiam me ajudar...

quando vou usar o navigation.navigate() > com uma string dentro ele reclama e fala que o parâemtro que a função deve receber tem que ser do tipo never, não do tipo string... só que já tinha desenvolvido um app com navegação e utilizei igual foi visto nesta aula deste módulo.

segue print do erro:

criei um componente de botão default recebendo como parâmetro o nome para navegar: Insira aqui a descrição dessa imagem para ajudar na acessibilidade

onde eu utilizo o componente de botão:

Insira aqui a descrição dessa imagem para ajudar na acessibilidadeno caso, já tentei utilizar o botão no componente sem externalizar ele e mesmo assim recebo o mesmo erro.

meu app.tsx:

Insira aqui a descrição dessa imagem para ajudar na acessibilidademinha rota da tela principal para de login e a de cadastro:

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

este seria o objetivo, segue na ordem do arq de rotas: tela inicial, login e tela de cadastro

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

1 resposta

Oi Pedro, tudo bem?

Esse erro geralmente ocorre quando o TypeScript não consegue inferir corretamente o tipo de parâmetro que a função navigate() deve receber. Isso pode acontecer se a configuração de rotas do seu aplicativo não estiver corretamente tipada.

Agora, vamos verificar a tipagem das suas rotas. No seu arquivo de rotas, você deve criar uma interface para cada tela do seu aplicativo. Por exemplo:

export type RootStackParamList = {
  Home: undefined;
  Login: undefined;
  Cadastro: undefined;
};

Nesse caso, temos três telas: Home, Login e Cadastro. O valor 'undefined' indica que essas telas não recebem nenhum parâmetro.

Depois, você deve utilizar essa interface ao criar sua stack de navegação:

const Stack = createNativeStackNavigator<RootStackParamList>();

E, ao utilizar a função navigate(), você deve passar o nome da tela como parâmetro, exatamente como declarado na interface:

navigation.navigate('Home');

Lembre-se que o nome da tela deve ser uma string e deve corresponder exatamente ao nome declarado na interface.

Espero que essas instruções ajudem a resolver o seu problema!

Um abraço e bons estudos.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software