1
resposta

App não pode ser usado como um componente JSX

Quando finalizarTarefa foi tipado como void, a const root passou a dar erro dizendo que o módulo App não pode ser usado como um componente JSX, que o tipo de retorno void não é um elemento JSX válido. Qualquer mudança que tento fazer resulta em um novo erro.

1 resposta

Oi Gustavo! Tudo bem?

Desculpe a demora em retornar.

Entendi que você está enfrentando um erro ao tentar finalizar a tarefa em seu projeto React com Typescript. O erro em questão diz que o módulo App não pode ser usado como um componente JSX, devido ao tipo de retorno void não ser um elemento JSX válido.

Isso acontece porque, ao declarar a função finalizarTarefa como void, você está indicando que ela não retorna nenhum valor, o que inclui um elemento JSX. Então, quando você tenta utilizar a constante root e renderizar o componente App, que é retornado pela função finalizarTarefa, ocorre esse erro.

Para solucionar esse problema, você pode mudar o tipo de retorno da função finalizarTarefa para o tipo de retorno da função que a chama. Se essa função que chama finalizarTarefa retorna um componente JSX, então finalizarTarefa também deve retornar um componente JSX. Dessa forma, você pode ter certeza de que o tipo de retorno será um elemento JSX válido.

Veja um exemplo de como fazer isso:

// Função que chama finalizarTarefa e retorna um elemento JSX
function minhaFuncao(): JSX.Element {
  const elemento = finalizarTarefa();
  return elemento;
}

// Função finalizarTarefa retorna um elemento JSX
function finalizarTarefa(): JSX.Element {
  return <App />;
}

No exemplo acima, a função minhaFuncao é a que chama finalizarTarefa e retorna um elemento JSX. Então, a função finalizarTarefa também retorna um elemento JSX, que é o componente App. Dessa forma, quando você chama a função minhaFuncao e renderiza o elemento retornado, não há erros relacionados ao tipo de retorno.

Outra opção seria alterar o tipo de retorno da função finalizarTarefa para qualquer, indicando que ela pode retornar qualquer tipo de valor, incluindo um elemento JSX. No entanto, essa não é uma abordagem recomendada, pois pode resultar em erros difíceis de rastrear no futuro.

Espero que tenha te ajudado!

Um abraço e bons estudos.