Saiba mais sobre tags JSX de fechamento automático
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.
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'));
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.