Freecodecamp: [Bêta] En savoir plus sur les balises JSX à fermeture automatique

Créé le 13 févr. 2018  ·  4Commentaires  ·  Source: freeCodeCamp/freeCodeCamp



Nom du défi

En savoir plus sur les balises JSX à fermeture automatique

Description du problème


Suppression des commentaires et fermeture des balises (la balise br manquée lors de la première tentative a échoué, puis corrigée), puis la tentative a échoué, mais l'élément rendu sur la page.

L'échec provenait de: l'élément JSX fourni doit être rendu tel quel sur le nœud DOM avec l'ID de challenge-node.
L'élément a été rendu sur l'aperçu lors de la réception de cette erreur.
Apparemment, il n'est pas rendu avec l'ID du nœud de défi, mais plutôt avec l'ID racine.

Code ajouté: ReactDOM.render(JSX, document.getElementById('challenge-node'));
Les tests ont réussi et maintenant il est rendu deux fois sur l'aperçu.

Le défi déclare:

Corrigez les erreurs dans l'éditeur de code afin qu'il soit valide JSX et transpile avec succès. Assurez-vous de ne modifier aucun contenu - il vous suffit de fermer les balises là où elles sont nécessaires.

Il ne mentionne pas la nécessité de le joindre au DOM et semble indiquer que vous devez uniquement ajuster le saut de ligne et la ligne horizontale.

Solution:
Besoin d'ajouter des directions pour effectuer le rendu dans le DOM et supprimer l'aperçu actuel.
Ou vous devez ajuster l'aperçu pour qu'il soit hors du nœud de défi au lieu de l'ID racine.
Ou il y a une autre solution à laquelle je ne peux actuellement pas penser.

Votre code

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

Tous les 4 commentaires

Merci d'avoir signalé le problème! Je ne pense pas que nous devrions ajouter des instructions pour rendre le composant dans le DOM.

Ce serait incompatible avec les comportements de tous les autres défis d'élément DOM de React. Par exemple, dans le défi précédent, Définir une classe HTML dans JSX , aucun ReactDOM.render n'est nécessaire pour réussir le défi.

@TJBarrettJR la raison pour laquelle l'ajout d'un ReactDOM.render à l'éditeur de code a rendu le composant deux fois était due à la façon dont le code prédéfini est rendu dans freeCodeCamp. Les fichiers ont un code "corps" et un code "queue". La queue est précédée du code d'un utilisateur et contient généralement une ligne ReactDOM.render , ce qui donne deux rendus.

La ligne de rendu (illustrée ci-dessous) est actuellement incluse dans les graines comme solution.

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

Il est également testé pour. Je vais simplement ouvrir un PR modifiant la solution et supprimant le test.

C'est intéressant - le challenge-node id est réservé aux exercices qui rendent des éléments HTML dans le DOM; Je ne sais pas comment cela s'est retrouvé dans le fichier de départ.

J'ai vérifié ce ReactDOM.render[ing] inutile dans les autres défis React; il n'y en a pas d'autres.

@ jkao1 qui a du sens sur la raison pour laquelle il a été rendu deux fois, merci!

Jusqu'à présent, je n'ai rien vu d'extraordinaire avec les autres défis, mais j'y travaille toujours.

Cette page vous a été utile?
0 / 5 - 0 notes