76 lines
2.5 KiB
Markdown
76 lines
2.5 KiB
Markdown
![]() |
---
|
||
|
id: 5a24bbe0dba28a8d3cbd4c5f
|
||
|
title: HTML 要素を DOM にレンダーする
|
||
|
challengeType: 6
|
||
|
forumTopicId: 301406
|
||
|
dashedName: render-html-elements-to-the-dom
|
||
|
---
|
||
|
|
||
|
# --description--
|
||
|
|
||
|
ここまで、JSX は JavaScript の中で判読できる HTML を記述するための便利なツールであることを説明しました。 React では、ReactDOM と呼ばれる React のレンダー API を使用して、この JSX を直接、HTML の DOM にレンダーすることができます。
|
||
|
|
||
|
ReactDOM では、DOM に React の要素をレンダーする次のような簡単なメソッドが用意されています: `ReactDOM.render(componentToRender, targetNode)`。ここで、1 つ目の引数はレンダーする React の要素またはコンポーネントで、2 つ目の引数はコンポーネントのレンダー先となる DOM ノードです。
|
||
|
|
||
|
予想されるとおり、`ReactDOM.render()` は JSX 要素宣言の後に呼び出す必要があります。変数を使用前に宣言する必要があるのと同様です。
|
||
|
|
||
|
# --instructions--
|
||
|
|
||
|
コードエディターに単純な JSX コンポーネントがあります。 `ReactDOM.render()` メソッドを使用して、このコンポーネントをページにレンダーしてください。 定義済みの JSX 要素を 1 つ目の引数として直接渡し、それらのレンダー先となる DOM ノードを `document.getElementById()` を使用して選択できます。 `id='challenge-node'` を持つ `div` を使用できます。 `JSX` 定数は変更しないでください。
|
||
|
|
||
|
# --hints--
|
||
|
|
||
|
定数 `JSX` から `div` 要素を返します。
|
||
|
|
||
|
```js
|
||
|
assert(JSX.type === 'div');
|
||
|
```
|
||
|
|
||
|
`div` に 1 つ目の要素として `h1` タグを含めます。
|
||
|
|
||
|
```js
|
||
|
assert(JSX.props.children[0].type === 'h1');
|
||
|
```
|
||
|
|
||
|
`div` に 2 つ目の要素として `p` タグを含めます。
|
||
|
|
||
|
```js
|
||
|
assert(JSX.props.children[1].type === 'p');
|
||
|
```
|
||
|
|
||
|
渡された JSX 要素を、id `challenge-node` を持つ DOM ノードにレンダーします。
|
||
|
|
||
|
```js
|
||
|
assert(
|
||
|
document.getElementById('challenge-node').childNodes[0].innerHTML ===
|
||
|
'<h1>Hello World</h1><p>Lets render this to the DOM</p>'
|
||
|
);
|
||
|
```
|
||
|
|
||
|
# --seed--
|
||
|
|
||
|
## --seed-contents--
|
||
|
|
||
|
```jsx
|
||
|
const JSX = (
|
||
|
<div>
|
||
|
<h1>Hello World</h1>
|
||
|
<p>Lets render this to the DOM</p>
|
||
|
</div>
|
||
|
);
|
||
|
// Change code below this line
|
||
|
```
|
||
|
|
||
|
# --solutions--
|
||
|
|
||
|
```jsx
|
||
|
const JSX = (
|
||
|
<div>
|
||
|
<h1>Hello World</h1>
|
||
|
<p>Lets render this to the DOM</p>
|
||
|
</div>
|
||
|
);
|
||
|
// Change code below this line
|
||
|
ReactDOM.render(JSX, document.getElementById('challenge-node'));
|
||
|
```
|