2
respostas

Enclosing tag

Não entendi porque é necessário colocar tudo dentro da DIV (caso não coloque, vem o erro Parsing error: Adjacent JSX elements must be wrapped in an enclosing tag. Did you want a JSX fragment <>...</>? (11:4)). Isso parece dificultar até o css.

2 respostas

Beleza Rodrigo? Quando você está trabalhando com JSX, a sintaxe exige que todos os elementos adjacentes sejam envolvidos em um único elemento de nível superior. Isso ocorre porque o JSX retorna apenas um único elemento. Se você tentar retornar múltiplos elementos JSX sem envolvê-los em um contêiner, como uma

, ocorrerá um erro de análise como foi seu caso.

Oi, Rodrigo, tudo bem?

Como o colega mencionou na mensagem acima, quando criamos componentes utilizando o React, é necessário que todos os elementos que compõem esse componente estejam envolvidos em uma única tag, como, uma caixa. Isso ocorre, porque na linguagem do React a linguagem JSX que utilizamos, deve ser enviada para a função React.createElement(), responsável por estruturar o elemento na tela do navegador. Essa função espera que você entregue apenas uma coisa por vez. Se você tentar devolver várias coisas sem englobá-los em uma tag principal, o React não vai entender e vai mostrar o erro mencionado.

Agora, por que usar uma div? Bem, a div é a escolha mais comum porque é um elemento neutro que não adiciona nenhuma semântica ou estilo ao HTML. No entanto, você pode usar qualquer elemento que faça sentido para o seu código. Se você não quiser adicionar um elemento extra ao DOM, você pode usar o que é chamado de Fragmento React, que é basicamente uma tag vazia que o React irá ignorar na renderização final. Você pode fazer isso usando <></> ou <React.Fragment></React.Fragment>.

Por exemplo, se você tem dois elementos no nível superior, como este:

function MeuComponente() {
  return (
    <h1>Olá, mundo!</h1>
    <p>Bem-vindo ao React.</p>
  );
}

Você receberá o erro: "Adjacent JSX elements must be wrapped in an enclosing tag. Did you want a JSX fragment <>...</>?". Mas você pode corrigir isso envolvendo os elementos em uma div ou em um Fragmento React, assim:

function MeuComponente() {
  return (
    <div>
      <h1>Olá, mundo!</h1>
      <p>Bem-vindo ao React.</p>
    </div>
  );
}

ou

function MeuComponente() {
  return (
    <>
      <h1>Olá, mundo!</h1>
      <p>Bem-vindo ao React.</p>
    </>
  );
}

Espero ter ajudado. Caso tenha dúvidas, conte com o fórum. Abraços!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. 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