コメントを削除してタグを閉じ(最初の試行で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'));
問題を報告していただきありがとうございます。 コンポーネントをDOMにレンダリングするための指示を追加する必要があるとは思いません。
これは、他のすべてのReactDOM要素の課題の動作と矛盾します。 たとえば、前のチャレンジ「 JSXでReactDOM.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回レンダリングされた理由に意味があります、ありがとう!
これまでのところ、他の課題で異常なことは何も見ていませんが、それでも取り組んでいます。