Freecodecamp: [Beta] Erfahren Sie mehr über selbstschließende JSX-Tags

Erstellt am 13. Feb. 2018  ·  4Kommentare  ·  Quelle: freeCodeCamp/freeCodeCamp



Name der Herausforderung

Erfahren Sie mehr über selbstschließende JSX-Tags

Fehlerbeschreibung


Die Kommentare wurden entfernt und die Tags geschlossen (das br-Tag beim ersten Versuch fehlgeschlagen, dann behoben) und der Versuch fehlgeschlagen, aber dann das auf der Seite gerenderte Element.

Fehler war von: Das bereitgestellte JSX-Element sollte so wie es ist auf dem DOM-Knoten mit der ID des Herausforderungsknotens gerendert werden.
Das Element wurde in der Vorschau gerendert, als dieser Fehler angezeigt wurde.
Es scheint, dass es nicht mit der Challenge-Node-ID, sondern mit der Root-ID gerendert wird.

Code hinzugefügt: ReactDOM.render(JSX, document.getElementById('challenge-node'));
Tests bestanden und jetzt wird es zweimal in der Vorschau gerendert.

Die Herausforderung lautet:

Beheben Sie die Fehler im Code-Editor so, dass JSX gültig ist und erfolgreich transpiliert wird. Stellen Sie sicher, dass Sie keinen Inhalt ändern - Sie müssen Tags nur dort schließen, wo sie benötigt werden.

Es wird nicht erwähnt, dass es an das DOM angehängt werden muss, und es scheint anzuzeigen, dass Sie nur den Zeilenumbruch und die horizontale Linie anpassen müssen.

Lösung:
Sie müssen Anweisungen zum Rendern zum DOM hinzufügen und die aktuelle Vorschau entfernen.
Oder Sie müssen die Vorschau so anpassen, dass sie außerhalb des Challenge-Knotens anstelle der Root-ID liegt.
Oder es gibt eine andere Lösung, an die ich derzeit nicht denken kann.

Dein 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

Alle 4 Kommentare

Vielen Dank, dass Sie das Problem gemeldet haben! Ich glaube nicht, dass wir Anweisungen hinzufügen sollten, um die Komponente in das DOM zu rendern.

Dies würde nicht mit dem Verhalten aller anderen React DOM-Elementherausforderungen übereinstimmen. Beispiel: In der vorherigen Herausforderung " ReactDOM.render benötigt, um die Herausforderung zu bestehen.

@TJBarrettJR Der Grund, warum das Hinzufügen eines ReactDOM.render zum Code-Editor, der die Komponente zweimal gerendert hat, auf die Art und Weise zurückzuführen ist, wie gesetzter Code in freeCodeCamp gerendert wird. Dateien haben einen "Body" -Code und einen "Tail" -Code. Das Ende wird dem Code eines Benutzers vorangestellt und enthält normalerweise eine ReactDOM.render -Zeile, was zu zwei Renderings führt.

Die Renderlinie (siehe unten) ist derzeit als Lösung in den Seeds enthalten.

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

Es ist auch getestet für. Ich öffne einfach einen PR, der die Lösung modifiziert und den Test entfernt.

Es ist interessant: Die ID challenge-node ist für Übungen reserviert, mit denen HTML-Elemente im DOM gerendert werden. Ich bin nicht sicher, wie es in der Seed-Datei gelandet ist.

Ich habe in den anderen React-Herausforderungen nach diesem unnötigen ReactDOM.render[ing] gesucht. es gibt keine anderen.

@ jkao1 das macht Sinn warum es zweimal gerendert hat, danke!

Bisher habe ich bei den anderen Herausforderungen nichts Außergewöhnliches gesehen, aber ich arbeite immer noch daran.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen