Freecodecamp: [Beta] Saiba mais sobre tags JSX de fechamento automático

Criado em 13 fev. 2018  ·  4Comentários  ·  Fonte: freeCodeCamp/freeCodeCamp



Nome do Desafio

Saiba mais sobre tags JSX de fechamento automático

descrição do problema


Removeu os comentários e fechou as tags (falhou a tag br na primeira tentativa e depois foi corrigida) e, em seguida, a tentativa falhou, mas o item renderizado na página.

A falha foi de: O elemento JSX fornecido deve ser renderizado como está para o nó DOM com id de nó de desafio.
O item foi renderizado na visualização ao receber este erro.
Parece que ele está sendo renderizado não com o ID do nó de desafio, mas com o ID da raiz.

Código adicionado: ReactDOM.render(JSX, document.getElementById('challenge-node'));
Os testes foram aprovados e agora ele é renderizado duas vezes na visualização.

O desafio afirma:

Corrija os erros no editor de código para que seja JSX válido e seja transpilado com êxito. Certifique-se de não alterar nada do conteúdo - você só precisa fechar as tags onde elas são necessárias.

Ele não menciona a necessidade de anexá-lo ao DOM e parece indicar que você só precisa ajustar a quebra de linha e a linha horizontal.

Solução:
É necessário adicionar instruções para renderizar no DOM e remover a visualização atual.
Ou precisa ajustar a visualização para fora do nó de desafio em vez do id de raiz
Ou há outra solução na qual não consigo pensar no momento.

Seu código

Failed:
const JSX = (
  <div>
    <h2>Welcome to React!</h2><br />
    <p>Be sure to close all tags!</p>
    <hr />
  </div>
);

Passed: 
const JSX = (
  <div>
    <h2>Welcome to React!</h2><br />
    <p>Be sure to close all tags!</p>
    <hr />
  </div>
);
ReactDOM.render(JSX, document.getElementById('challenge-node'));

help wanted learn

Todos 4 comentários

Obrigado por relatar o problema! Não acredito que devamos adicionar instruções para renderizar o componente ao DOM.

Seria inconsistente com os comportamentos de todos os outros desafios do elemento React DOM. Por exemplo, no desafio anterior, Definir uma classe HTML em JSX , nenhum ReactDOM.render é necessário para passar no desafio.

@TJBarrettJR a razão pela qual adicionar ReactDOM.render ao editor de código renderizou o componente duas vezes foi devido à maneira como o código propagado é renderizado em freeCodeCamp. Os arquivos possuem um código de "corpo" e um código de "cauda". A cauda é prefixada ao código de um usuário e geralmente contém uma linha ReactDOM.render , resultando assim em duas renderizações.

A linha de renderização (mostrada abaixo) está atualmente incluída nas sementes como uma solução.

ReactDOM.render(JSX, document.getElementById('challenge-node'));

Ele também é testado. Vou abrir um PR modificando a solução e removendo o teste.

É interessante - o challenge-node id é reservado para exercícios que renderizam elementos HTML para o DOM; Não tenho certeza de como acabou no arquivo de seed.

Eu verifiquei este ReactDOM.render[ing] desnecessário nos outros desafios do React; nenhum outro existe.

@ jkao1 faz sentido porque foi processado duas vezes, obrigado!

Até agora não vi nada fora do comum com os outros desafios, mas ainda estou trabalhando nisso.

Esta página foi útil?
0 / 5 - 0 avaliações