Freecodecamp: [ベータ版]自己閉鎖型JSXタグについて学ぶ

作成日 2018年02月13日  ·  4コメント  ·  ソース: freeCodeCamp/freeCodeCamp



チャレンジ名

セルフクロージングJSXタグについて学ぶ

問題の説明


コメントを削除してタグを閉じ(最初の試行でbrタグが欠落して失敗し、修正されました)、試行が失敗しましたが、アイテムがページにレンダリングされました。

失敗の原因:提供されたJSX要素は、challenge-nodeのIDを持つDOMノードにそのままレンダリングされる必要があります。
このエラーを受け取ったときに、アイテムがプレビューに表示されました。
チャレンジノードIDではなくルートIDでレンダリングされているように見えます。

追加されたコード: ReactDOM.render(JSX, document.getElementById('challenge-node'));
テストに合格し、プレビューで2回レンダリングされるようになりました。

チャレンジは次のように述べています。

コードエディタのエラーを修正して、有効なJSXであり、正常に発生するようにします。 コンテンツを変更しないように注意してください。必要な場所でタグを閉じるだけで済みます。

DOMにアタッチする必要があることについては言及されておらず、改行と水平線を調整するだけでよいことを示しているようです。

解決:
DOMにレンダリングする方向を追加し、現在のプレビューを削除する必要があります。
または、ルートIDではなくチャレンジノードから外れるようにプレビューを調整する必要があります。
または、私が現在考えられない別の解決策があります。

あなたのコード

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

全てのコメント4件

問題を報告していただきありがとうございます。 コンポーネントをDOMにレンダリングするための指示を追加する必要があるとは思いません。

これは、他のすべてのReactDOM要素の課題の動作と矛盾します。 たとえば、前のチャレンジ「 JSXReactDOM.renderは必要ありません。

@TJBarrettJR ReactDOM.renderをコードエディターに追加してコンポーネントを2回レンダリングした理由は、シードされたコードがfreeCodeCampでレンダリングされる方法によるものでした。 ファイルには「本体」コードと「テール」コードがあります。 テールはユーザーのコードの前に付加され、通常はReactDOM.render行が含まれているため、2つのレンダリングが行われます。

レンダリングライン(以下に表示)は現在、ソリューションとしてシードに含まれています。

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

また、テストされています。 ソリューションを変更してテストを削除するPRを開きます。

興味深いことに、 challenge-node idは、HTML要素をDOMにレンダリングする演習用に予約されています。 シードファイルでどのように終わったかはわかりません。

他のReactチャレンジでこの不要なReactDOM.render[ing]をチェックしました。 他には存在しません。

@ jkao1それが2回レンダリングされた理由に意味があります、ありがとう!

これまでのところ、他の課題で異常なことは何も見ていませんが、それでも取り組んでいます。

このページは役に立ちましたか?
0 / 5 - 0 評価