2.7 KiB
2.7 KiB
id, title, challengeType, forumTopicId, dashedName
id | title | challengeType | forumTopicId | dashedName |
---|---|---|---|---|
5a24bbe0dba28a8d3cbd4c5d | 複雑な JSX 要素を作成する | 6 | 301382 | create-a-complex-jsx-element |
--description--
前回のチャレンジは JSX の単純な例でしたが、もっと複雑な HTML を JSX で表現することもできます。
ネストされた JSX について一つ重要なのは、単一の要素を返さなければならないということです。
この 1 つの親要素で、他のすべてのレベルのネストされた要素を囲むことになります。
たとえば、親ラッパー要素を持たない兄弟要素として記述された複数の JSX 要素はトランスパイルされません。
例:
有効な JSX:
<div>
<p>Paragraph One</p>
<p>Paragraph Two</p>
<p>Paragraph Three</p>
</div>
無効な JSX:
<p>Paragraph One</p>
<p>Paragraph Two</p>
<p>Paragraph Three</p>
--instructions--
次の要素を出現順に含む div
をレンダーする、新しい定数 JSX
を定義してください。
h1
、p
、および 3 つの li
アイテムを含む順序なしリスト。 要素にはそれぞれ任意のテキストを含めることができます。
注: こうした複数の要素をレンダーする場合、すべてを括弧で囲むことができますが、厳密に必要というわけではありません。 また、このチャレンジでは div
タグを使用して、単一の親要素の中ですべての子要素を囲んでいます。 div
を削除すると、JSX はトランスパイルを実行しなくなります。 このことは React コンポーネントで JSX 要素を返す場合にも適用されるので、覚えておいてください。
--hints--
定数 JSX
から div
要素を返します。
assert(JSX.type === 'div');
div
に 1 つ目の要素として h1
タグを含めます。
assert(JSX.props.children[0].type === 'h1');
div
に 2 つ目の要素として p
タグを含めます。
assert(JSX.props.children[1].type === 'p');
div
に 3 つ目の要素として ul
タグを含めます。
assert(JSX.props.children[2].type === 'ul');
ul
に li
要素を 3 つ含めます。
assert(
JSX.props.children
.filter((ele) => ele.type === 'ul')[0]
.props.children.filter((ele) => ele.type === 'li').length === 3
);
--seed--
--after-user-code--
ReactDOM.render(JSX, document.getElementById('root'))
--seed-contents--
--solutions--
const JSX = (
<div>
<h1>Hello JSX!</h1>
<p>Some info</p>
<ul>
<li>An item</li>
<li>Another item</li>
<li>A third item</li>
</ul>
</div>);