React入門の導入スライド

22 件(作成済み 16・導入不要 0・未作成 6・合計 78枚 / 16本)

レッスンの導入の索引へ戻る

React入門のコースサムネイル
React入門1レッスン

Reactとは

導入スライド 4

同じ表示、書くものが違う

左は「どうやって画面を組み立てるか」の手順、右は「どうなっていてほしいか」を書いています。

命令的:手順を書く

const box = document.getElementById("profile"); const title = document.createElement("h1"); title.textContent = "あおいのプロフィール"; box.appendChild(title);

宣言的 UI:完成形を書く

export default function App() { return <h1>あおいのプロフィール</h1>; }

DOM をどの順番で組み立てるかは React がやります。

1 / 4

命令的UIでは、手順を人がつなぐ

画面に1行足すだけでも、人がこの3手を順番に書きます。

作る

createElement で部品を1つ作る

文字を入れる

textContent で中身の文字を決める

つなぐ

append で親の下にぶら下げる

3手目のつなぐをやるまで、作った部品は画面のどこにも入っていません。順番を覚えているのは書いた人の側です。

2 / 4

Reactでは、返す形を変える

左の形を書きかえると、右の画面がそのとおりに変わります。document は使いません。

プレビュー

あおいのプロフィール

Web エンジニア

export default function App() {
return (
<div>
<h1>あおいのプロフィール</h1>
あおいのプロフィール見出しに出る文字
<p>Web エンジニア</p>
Web エンジニア段落に出る文字
</div>
);
}

3 / 4

考えてみよう外しても進めます

React で表示している見出しの文字を変えたいとき、書きかえるのはどれですか。

選ぶと、この枚の中で答えと理由を確かめられます。

4 / 4

React入門のコースサムネイル
React入門2レッスン

最初の表示

導入スライド 4

代表の印がないと表示されない

export default は「このファイルの代表はこれです」という印です。この印がないと、React はどの関数を表示すればよいか分かりません。

export default を書き忘れる

function App() { return <h1>あおいのプロフィールサイト</h1>; }

export default を書いている

export default function App() { return <h1>あおいのプロフィールサイト</h1>; }

React はファイル名だけを知っていて、中の関数の名前までは知りません。だから代表に印を付けます。

1 / 4

return した形だけが画面に出る

App 関数の中に console.log を書いても、画面には出ません。画面に出るのは return した形だけです。

console.log だけ書く

export default function App() { console.log("あおいのプロフィールサイト"); }

return で返す

export default function App() { return <h1>あおいのプロフィールサイト</h1>; }

console.log の中身は開発者ツールのコンソールに出るだけで、プレビューには反映されません。

2 / 4

ここを書きかえると画面が変わる

演習で書きかえるのは、return のうしろにあるタグと文字だけです。

プレビュー

あおいのプロフィールサイト

export default function App() {
return <h1>あおいのプロフィールサイト</h1>;
h1タグの名前
あおいのプロフィールサイト画面に出る文字
}

3 / 4

考えてみよう外しても進めます

App.jsx から export default を消すと、画面はどうなりますか。

選ぶと、この枚の中で答えと理由を確かめられます。

4 / 4

React入門のコースサムネイル
React入門3レッスン

JSX

導入スライド 5

JSXは文字列ではない

return のうしろに h1 のタグがそのまま書けます。クォートで囲むと、ただの文字列になってしまいます。

文字列として書くと

export default function App() { return "<h1>あおいのプロフィール</h1>"; }

JSXとして書くと

export default function App() { return <h1>あおいのプロフィール</h1>; }

文字列は画面にそのまま表示され、要素にはなりません。

1 / 5

React入門 - JSX

JSXは関数呼び出しに変わる

書き方を切り替えて、ブラウザに渡る内容が同じか確かめてください。

  • 書き方を切り替えても、ブラウザに渡るコードは同じ
  • 変換を通さないままにすると、その場で止まる
  • 画面に出る文字は、変換されたコードの中の文字列と同じもの
JSX は関数呼び出し

2 / 5

returnを丸かっこで囲む

見出しと段落のように2つ以上を返すときは、全体を丸かっこと1つのタグで包みます。

丸かっこが無いと

export default function App() { return <div> <h1>あおいのプロフィール</h1> </div>; }

丸かっこで囲むと

export default function App() { return ( <div> <h1>あおいのプロフィール</h1> </div> ); }

return とタグの間で改行するときは、必ず丸かっこで囲みます。

3 / 5

React入門 - JSX

閉じタグは自分で閉じる

HTML なら省略できた閉じタグも、JSX では自分で閉じます。

末尾を スラッシュ と 大なり で閉じます。閉じ忘れると画面が真っ白になります。

<img src="/works/recipe.png" alt="レシピ検索アプリ" /> <br />

4 / 5

考えてみよう外しても進めます

見出しと段落の2つを1つの App から返したいとき、正しいのはどれですか。

選ぶと、この枚の中で答えと理由を確かめられます。

5 / 5

React入門のコースサムネイル
React入門4レッスン

JSXの決まり

導入スライド 5

class でなく className

JSX の属性名は、ブラウザの DOM API に合わせます。CSS の class は JSX では className です。

HTMLの感覚で書く

<div class="profile"> <h2>あおい</h2> </div>

JSXの書き方

<div className="profile"> <h2>あおい</h2> </div>

class と書いても画面には出ますが、開発中に className へ直すよう警告されます。

1 / 5

React入門 - JSXの決まり

閉じないタグも自分で閉じる

HTML では省略できた閉じタグも、JSX では自分で閉じます。

閉じ忘れると、そのあとの行が全部そのタグの中身として扱われ、エラーになります。

<hr /> <br /> <img src="/works/recipe.png" alt="レシピ検索アプリ" />

2 / 5

React入門 - JSXの決まり

返せるのは1つだけ

返す要素の数を増やして、包むかどうかを切り替えてください。

  • 要素を2つ以上にすると、包まない場合はエラーになる
  • 空のタグで包むと、複数でも1つとして返せる
  • 空のタグ自体は画面には何も表示されない
返せるのは1つだけ

3 / 5

演習で直す2か所

次の演習ではこの HTML 断片を動く JSX に直します。直す場所は class と閉じタグの2か所です。

演習で渡される HTML

<div class="profile"> <h2>あおい</h2> <p>Web エンジニアです</p> <hr> </div>

直したあとの JSX

<div className="profile"> <h2>あおい</h2> <p>Web エンジニアです</p> <hr /> </div>

この2か所さえ直せば、あとは今のままで動きます。

4 / 5

考えてみよう外しても進めます

hr の閉じタグを書かずに hr のタグだけを置くと、どうなりますか。

選ぶと、この枚の中で答えと理由を確かめられます。

5 / 5

React入門のコースサムネイル
React入門5レッスン

波かっこで値を出す

導入スライド 5

文字を直接書かない

見出しの文字を直接書くと、変えたい場所を毎回探すことになります。React では変数を波かっこで呼び出します。

文字を直接書く

export default function App() { return <h1>あおいのプロフィール</h1>; }

データから出す

const profile = { name: "あおい", }; export default function App() { return <h1>{profile.name}のプロフィール</h1>; }

名前を変えるときは profile.name の中身を直すだけで済みます。

1 / 5

React入門 - 波かっこで値を出す

波かっこの中は式

price を動かして、下の画面の数字がどう変わるか見てください。

  • price を動かすと、式の答えと画面の数字が一緒に変わる
  • 波かっこを外すと、計算されずに文字がそのまま出る
  • 波かっこの中には price * 2 のような計算をそのまま書ける
波かっこの中は式

2 / 5

React入門 - 波かっこで値を出す

波かっこの中に書けるもの

書けるのは式だけです。式とは、計算すると1つの値になるもののことです。

if 文や for 文は値にならないので、波かっこの中には書けません。

波かっこに書くもの画面に出るもの
{works.length}3
{profile.name}あおい
{2026 - 2025}1
{profile.title.toUpperCase()}WEB エンジニア

3 / 5

属性にも使える

波かっこはタグの中身だけでなく、属性の値にも使えます。属性で使うときはクォートで囲みません。

そうしたくなる書き方

<img src={work.image} alt="{work.title}" />

実際に使う書き方

<img src={work.image} alt={work.title} />

クォートで囲むと、波かっこを含んだ文字がそのまま入ってしまいます。

4 / 5

考えてみよう外しても進めます

profile がオブジェクトのとき、<p>{profile}</p> と書くと画面はどうなりますか。

選ぶと、この枚の中で答えと理由を確かめられます。

5 / 5

React入門のコースサムネイル導入スライド未作成
React入門のコースサムネイル
React入門7レッスン

第1章クイズ

導入スライド未作成
React入門のコースサムネイル
React入門8レッスン

アロー関数の復習

導入スライド 5

同じ処理をアロー関数で書く

左は function を使った書き方、右は同じ処理をアロー関数で書いたものです。

function を使った書き方

const toDisplayName = function (name, title) { return name + "(" + title + ")"; };

アロー関数で書いたもの

const toDisplayName = (name, title) => { return name + "(" + title + ")"; };

function が消えて、引数のうしろに矢印が付きました。処理の中身は変わりません。

1 / 5

React入門 - アロー関数の復習

波かっことreturnを省く

書き方を切り替えて、戻り値が変わるかどうか確かめてください。

  • function 版とアロー版は、書き方が違うだけで戻り値は同じ
  • 本体が1つの式なら、波かっこと return を両方省ける
  • 波かっこだけ残して return を消すと、undefined になる
アロー関数の省略

2 / 5

React入門 - アロー関数の復習

小さな関数をその場で渡す

ボタンの処理も一覧の変換も、その場で作った小さな関数を渡しています。

アロー関数が読めないと React のコードはほとんど読めません。書き慣れておきましょう。

<button onClick={() => setCount(count + 1)}>いいね</button> works.map((work) => <li>{work.title}</li>)

3 / 5

React入門 - アロー関数の復習

引数のかっこを省くとき

引数の数によって、かっこを省略できるかどうかが変わります。

このコースでは、引数が1つでもかっこを書く形で統一します。

書き方引数の数とかっこ
(title) => ...引数1つ。かっこを書いてもよい
title => ...引数1つ。かっこを省略した形
() => ...引数0個はかっこが必須

4 / 5

考えてみよう外しても進めます

波かっこを付けたアロー関数で return を書き忘れると、呼び出した結果はどうなりますか。

選ぶと、この枚の中で答えと理由を確かめられます。

5 / 5

React入門のコースサムネイル
React入門9レッスン

分割代入の復習

導入スライド 5

まとめて取り出す

左はプロパティを1つずつ取り出す書き方、右は分割代入でまとめて取り出す書き方です。

これまでの書き方

const name = profile.name; const title = profile.title;

分割代入で取り出す書き方

const { name, title } = profile;

波かっこの中に並べたプロパティ名が、そのまま変数名になります。

1 / 5

React入門 - 分割代入の復習

名前で結びつく

受け取り方を切り替えて、名前と値がどうつながるか確かめてください。

  • 並べる順番を入れ替えても、名前が同じなら同じ値が入る
  • 波かっこの中の名前が、そのままできる変数の名前になる
  • 綴りを間違えると、その変数だけ undefined になる
分割代入

2 / 5

既定値が効くのは1つだけ

bio に渡す値によって、既定値が使われるかどうかが変わります。

渡した bio実際に使われる値

bio が無い (undefined)

既定値のあいさつ文が使われる

bio に null が入っている

既定値は使われず null のまま

bio が空の文字列

既定値は使われず空のまま

既定値が使われるのは、値が undefined のときだけです。

3 / 5

propsもこの形で受け取る

次の章で出てくる props の受け取りも、まったく同じ分割代入の形です。

分割代入を使わない受け取り方

function ProfileCard(props) { return <h2>{props.name}</h2>; }

分割代入で受け取る書き方

function ProfileCard({ name }) { return <h2>{name}</h2>; }

引数のかっこを見ただけで、何を必要としているのかが分かります。

4 / 5

考えてみよう外しても進めます

オブジェクトを const [name] = profile; と角かっこで受け取ると、何が起こりますか。

選ぶと、この枚の中で答えと理由を確かめられます。

5 / 5

React入門のコースサムネイル
React入門10レッスン

スプレッド構文

導入スライド 5

React入門 - スプレッド構文

元の配列は残るか

2つの操作を順番に選んで、元の arr がどうなるか比べてください。

  • push を選ぶと、元の arr そのものが書き換わる
  • スプレッドを選ぶと、元の arr は残ったまま別の配列ができる
  • React が見ているのは「別の配列になったかどうか」
スプレッドと push

1 / 5

オブジェクトも同じ形で変える

1か所だけ変えた新しいオブジェクトを作ります。元の work は変わりません。

const work = {
id: 1,
title: "レシピ検索アプリ",
published: false,
};
const publishedWork = {
...work,
...work先にコピーする
published: true,
published: trueあとから上書きする
};

できたもの

idtitlepublished
work1レシピ検索アプリfalse
publishedWork1レシピ検索アプリtrue

2 / 5

書き換えでは画面が変わらない

元の配列を書き換えるだけだと、React は変化に気づきません。

画面が変わらない書き方

works.push(newWork); setWorks(works);

新しい配列を渡す書き方

setWorks([...works, newWork]);

push は同じ配列を書き換えるだけなので、渡しても同じものに見えます。

3 / 5

React入門 - スプレッド構文

コピーされるのは外側だけ

スプレッドが複製するのは1階層だけで、入れ子の中身は共有されたままです。

links の中までは複製されません。内側を変えたいときは、そこにも点を書きます。

const profile = { name: "あおい", links: { github: "aoi" } }; const copy = { ...profile }; copy.links.github = "aoi-dev"; profile.links.github; // "aoi-dev" 元まで変わってしまった

4 / 5

考えてみよう外しても進めます

作品を1件追加するとき、画面が正しく更新されるのはどちらの書き方ですか。

選ぶと、この枚の中で答えと理由を確かめられます。

5 / 5

React入門のコースサムネイル
React入門11レッスン

map

導入スライド 5

React入門 - map

同じ件数の別の配列に変える

map は1件ずつ変換した結果を集めて、同じ件数の新しい配列を返します。

3件が3件のまま。件数を減らしたいときは filter を使います。

元の要素変換後の要素
レシピ検索アプリレシピ検索アプリ(2025)
買い物メモツール買い物メモツール(2025)
写真ギャラリー写真ギャラリー(2024)

1 / 5

分割代入と組み合わせる

引数のところに波かっこを書けば、必要なものだけ取り出して変換できます。

const works = [
{ id: 1, title: "レシピ検索アプリ", year: 2025 },
{ id: 2, title: "買い物メモツール", year: 2025 },
];
const labels = works.map(
({ title, year }) => title + "(" + year + ")",
{ title, year }分割代入で受け取る
);

labels

中身
レシピ検索アプリ(2025)
買い物メモツール(2025)

2 / 5

変換先をJSXに変えるだけ

返す先を文字列から JSX に変えると、そのまま画面のリストになります。key は行を見分ける印で、詳しくは後の章で扱います。

プレビュー
  • レシピ検索アプリ
  • 買い物メモツール
  • 写真ギャラリー
export default function App() {
return (
<ul>
{works.map((work) => (
works.map1件ずつ変換する
<li key={work.id}>{work.title}</li>
key={work.id}行を見分ける印
))}
</ul>
);
}

3 / 5

React入門 - map

returnを忘れると起きること

波かっこで本体を書いたのに return を書き忘れると、中身が空になります。

件数は合っているのに中身が空、という症状が出たらここを疑ってください。

const labels = works.map((work) => { work.title + "(" + work.year + ")"; }); labels; // [undefined, undefined]

4 / 5

考えてみよう外しても進めます

3件の配列に map を使うと、返ってくる配列は何件になりますか。

選ぶと、この枚の中で答えと理由を確かめられます。

5 / 5

React入門のコースサムネイル
React入門12レッスン

三項演算子と論理積

導入スライド 5

値を返す条件分岐

if 文は先に箱を用意して書き込みます。三項演算子はこの1行がそのまま値になります。

if 文で書く

let status; if (work.published) { status = "公開中"; } else { status = "下書き"; }

三項演算子で書く

const status = work.published ? "公開中" : "下書き";

if 文は手順を実行するだけで、それ自体は値になりません。

1 / 5

React入門 - 三項演算子と論理積

選ばれる値が入れ替わる

数を動かして、しきい値をまたぐと選ばれる文字がどう入れ替わるか見てください。

  • しきい値をまたぐ瞬間に、選ばれる文字が入れ替わる
  • 真になった側の値だけが、そのまま結果に残る
  • 選ばれなかった側の値は、結果のどこにも出てこない
三項演算子の切り替え

2 / 5

React入門 - 三項演算子と論理積

左が真のときだけ右を返す

論理積は真偽値を返すわけではありません。左が偽ならその左の値を、真なら右の値を返します。

0 や空文字のように、偽であっても数字や文字列そのものが返ることがあります。

結果
true && "新着"新着
false && "新着"false
0 && "新着"0
"" && "新着"空の文字列

3 / 5

よくある落とし穴

左に数値や文字列をそのまま置くと、画面や文字列に思わぬ値が混ざります。

書いたコード実際に起こること

件数をそのまま左に置く

0 件のとき、画面に 0 とだけ表示される

文字列を組み立てる場所で使う

偽のとき false という文字が混ざる

左を必ず真偽値にします。文字列を組み立てる場所では三項演算子を使います。

4 / 5

考えてみよう外しても進めます

新着バッジの文字を文言に足します。新着でないときに安全なのはどちらですか。

選ぶと、この枚の中で答えと理由を確かめられます。

5 / 5

React入門のコースサムネイル
React入門13レッスン

つくる - データの下ごしらえ

導入スライド未作成
React入門のコースサムネイル
React入門14レッスン

第2章クイズ

導入スライド未作成
React入門のコースサムネイル
React入門15レッスン

コンポーネントを作る

導入スライド 5

関数がJSXを返す部品になる

名前を付けた関数がJSXを返せば、それがそのまま画面の部品になります。<Profile /> と書いた場所に、Profile が返したJSXが差し込まれます。

App の中に直接書く

export default function App() { return ( <div> <h1>あおいのプロフィール</h1> <p>あおい / Web エンジニア</p> </div> ); }

関数に切り出して呼び出す

function Profile() { return <p>あおい / Web エンジニア</p>; } export default function App() { return ( <div> <h1>あおいのプロフィール</h1> <Profile /> </div> ); }

1 / 5

React入門 - コンポーネントを作る

タグの先頭で結果が変わる

書き方を切り替えて、Card が呼ばれるかどうか見てください。

  • 大文字ではじめると、その瞬間に Card 関数が呼ばれる
  • 先頭を小文字にすると、React はHTML要素だと思い込む
  • 小文字のままだとエラーは出ず、画面に何も出ないだけになる
大文字のタグは関数の呼び出し

2 / 5

切り出す3つの手順

はじめから部品に分けようとせず、動く画面をまず作ってから移すほうが楽です。

関数を作る

新しい関数を作り、移したいJSXをreturnで返す

置きかえる

もとの場所を <Profile /> に置きかえる

確かめる

画面が前と同じに見えるか確かめる

見た目が変わらないのが正解です。変わるのは、あとから値を差し替えられるようになる未来だけです。

3 / 5

つまずきどころ

切り出すときによくある3つのミスです。

書いたことどうなるか

コンポーネント名を profile と小文字で書く

エラーは出ず、画面に何も表示されない

名前と肩書きのpを2つ、そのままreturnする

1つのかたまりで返していないためエラーになる

Profileの定義をAppの関数の中に書く

動くが、あとで値を持たせると消えてしまう置き場所になる

3つとも、あとで直すのに時間がかかる詰まり方です。

4 / 5

考えてみよう外しても進めます

コンポーネントの名前を profile と小文字で書いて <profile /> と使うと、どうなりますか。

選ぶと、この枚の中で答えと理由を確かめられます。

5 / 5

React入門のコースサムネイル
React入門16レッスン

props

導入スライド 5

渡した値が画面に出る

属性で渡した値が、そのまま props として子に届き、画面に出ます。

プレビュー

あおい

Web エンジニア

function Profile(props) {
return (
<section className="profile">
<p>{props.name}</p>
props.name受け取って表示
<p>{props.title}</p>
</section>
);
}
<Profile name="あおい" title="Web エンジニア" />
name="あおい"渡す値

1 / 5

React入門 - props

propsは一方通行

値と向きを切り替えて、propsがどちらに動くか見てください。

  • 親が持つ値を変えると、子が受け取る値も画面もそろって変わる
  • 子から親へ書きかえようとしても、親の値は動かない
  • 値は親から子へ流れるだけで、逆向きには流れない
props は一方通行

2 / 5

React入門 - props

文字列以外は波かっこ

クォートで囲むと文字列になります。数値や真偽値は波かっこで囲みます。

見た目は同じでも、あとで計算に使うときに文字列だと困ります。

書き方props に届く値
year="2025"文字列の "2025"
year={2025}数値の 2025
published={true}真偽値の true

3 / 5

propsは書きかえない

受け取った props を子の側で書きかえてはいけません。値は親から子への一方通行です。

やってしまいがちな書き方

function Profile(props) { props.name = "べつの名前"; return <p>{props.name}</p>; }

表示だけする書き方

function Profile(props) { return <p>{props.name}</p>; }

props は親から借りている値です。値を変えたいときの仕組みは、この先の章で扱います。

4 / 5

考えてみよう外しても進めます

Work コンポーネントに year として数値の2025を渡したいとき、正しい書き方はどれですか。

選ぶと、この枚の中で答えと理由を確かめられます。

5 / 5

React入門のコースサムネイル
React入門17レッスン

propsの分割代入

導入スライド 5

props. をくり返さない

props が増えるほど props. の繰り返しで読みにくくなり、打ち間違いも増えます。第2章で復習した分割代入を、そのまま引数のところで使います。

propsが3つに増えると

function Profile(props) { return ( <section className="profile"> <p>{props.name}</p> <p>{props.title}</p> <p>{props.bio}</p> </section> ); }

分割代入で受け取る

function Profile({ name, title, bio }) { return ( <section className="profile"> <p>{name}</p> <p>{title}</p> <p>{bio}</p> </section> ); }

1 / 5

React入門 - propsの分割代入

波かっこは受け取り方

引数の波かっこは、渡すものの形ではなく受け取り方の指定です。渡す側はこれまでどおり属性で書きます。

渡す側の書き方は変わりません。変わるのは受け取る側だけです。

書く場所書き方
渡す側(JSXの属性)<Profile name="あおい" title="Web エンジニア" />
受け取る側(関数の引数)function Profile({ name, title })
波かっこの中身渡すオブジェクトの形ではなく、受け取る変数の指定

2 / 5

書き忘れたpropsは使えない

分割代入は書いたものだけを取り出します。渡す側と受け取る側の両方を直さないと動きません。

書いたことどうなるか

title を波かっこに書かず、本文で {title} を使う

title is not defined と出て画面が真っ白になる

渡す側にだけ bio="..." を足す

受け取る側の波かっこに bio が無いと使われないまま

波かっこの中で name を nmae と打ち間違える

nmae は undefined になり、name も使えない

props を1つ足すときは、渡す側と受け取る側の両方を直したか確かめてください。

3 / 5

渡さなければ既定値

title を渡さなかったときだけ、既定値の「肩書き未設定」が使われます。渡した値があれば、そちらが優先されます。

function Profile({ name, title = "肩書き未設定" }) {
title = "肩書き未設定"渡されなかったときの値
return (
<p>{name} / {title}</p>
);
}

呼び出しと画面

呼び出し方画面に出る文字
<Profile name="あおい" />あおい / 肩書き未設定
<Profile name="あおい" title="Web エンジニア" />あおい / Web エンジニア

4 / 5

考えてみよう外しても進めます

function Profile({ name }) の中で、波かっこに書いていない title を {title} として使うと何が起きますか。

選ぶと、この枚の中で答えと理由を確かめられます。

5 / 5

React入門のコースサムネイル
React入門18レッスン

children

導入スライド 5

枠は共通、中身は差し込む

見た目の枠を複製せず、中身だけを外から差し込めるようにします。枠の div と h2 は Card の中に1回だけ書けば済みます。

枠ごと重複して書く

<div className="card"> <h2 className="card-title">プロフィール</h2> <p className="name">あおい</p> </div> <div className="card"> <h2 className="card-title">作品</h2> <p>レシピ検索アプリ</p> </div>

Cardに中身をはさむ

<Card title="プロフィール"> <p className="name">あおい</p> </Card> <Card title="作品"> <p>レシピ検索アプリ</p> </Card>

1 / 5

React入門 - children

はさんだ中身がchildren

挟むものを切り替えて、children に何が入るか確かめてください。

  • 挟む中身を切り替えると、書いた行と画面が同時に変わる
  • 何も挟まないと children は空になり、画面には何も出ない
  • {children} を置き忘れると、受け取っていても画面には出ない
タグで挟んだものが children

2 / 5

React入門 - children

childrenも1つのprops

children は特別扱いではなく、値の由来が違うだけのふつうの props です。

名前は children で決まっています。ほかの名前にはできません。

propsの名前値の由来
title属性 title="プロフィール" で渡した値
children開始タグと終了タグではさんだ中身
受け取り方({ title, children }) と同じ波かっこで受け取る

3 / 5

はさみ忘れると消える

children を扱うときによくある事故です。エラーは出ないので気づきにくいところです。

書いたことどうなるか

Card の return で {children} を書き忘れる

はさんだ中身が画面のどこにも出ない

<Card title="作品" /> と自分で閉じる

children が空になり、見出しだけの枠が残る

children の代わりに body={...} と属性で渡す

動くが、呼ぶたびにJSXを組み立てて渡す手間が増える

中身が消えたと思ったら、まず {children} を置いたかを見てください。

4 / 5

考えてみよう外しても進めます

<Card title="作品" /> のように自分で閉じるタグを書くと、Card が受け取る children はどうなりますか。

選ぶと、この枚の中で答えと理由を確かめられます。

5 / 5

React入門のコースサムネイル
React入門19レッスン

ファイルに分ける

導入スライド 5

1ファイルと複数ファイル

これまでは Card も Profile も App.jsx にまとめて書いてきました。部品が増えると、この1ファイルが読みにくくなります。

1ファイルにまとめて書く

// App.jsx function Card({ title, children }) { ... } function Profile({ name, title, bio }) { ... } export default function App() { ... }

componentsフォルダへ分ける

src/ App.jsx components/ Card.jsx Profile.jsx

部品が3つを超えたあたりから、目当てのコードを探す手間が増えます。

1 / 5

分ける・出す・受け取る

ファイル分割は、この3手の繰り返しです。

分ける

部品ごとのファイルを components/ に作る

出す

export default を付けて外から見えるようにする

受け取る

使う側で import してタグとして使う

分けても画面は何も変わりません。変わるのは、直したい部品をすぐ見つけられるかどうかです。

2 / 5

React入門 - ファイルに分ける

出し方と受け取り方

出し方によって、受け取る側の書き方が変わります。

このコースでは1ファイル1部品なので、基本は default export だけを使います。

出す側の書き方受け取る側の書き方
export default function Card() {}import Card from "./components/Card.jsx"
export function CardTitle() {}import { CardTitle } from "./components/Card.jsx"
自分で書いたファイルを指す頭の ./ か ../ は省略できない

3 / 5

importでよくある事故

書き方をひとつ間違えるだけで、画面がまるごと出なくなります。

書いたことどうなるか

頭の ./ を書かずに import Card from "components/Card.jsx"

npm のライブラリとして探しにいき、見つからずエラーになる

default export なのに { Card } と波かっこで受け取る

Card は undefined になり、画面が真っ白になる

export default を書き忘れる

import できるものが無く、同じく undefined になる

エラーに部品名が出てきたら、まず import の波かっこと ./ を疑ってください。

4 / 5

考えてみよう外しても進めます

import Card from "components/Card.jsx"; と、頭の ./ を書き忘れました。実行するとどうなりますか。

選ぶと、この枚の中で答えと理由を確かめられます。

5 / 5

React入門のコースサムネイル
React入門20レッスン

部品を使い回す

導入スライド 5

コピペと再利用

同じ見た目のカードを増やすとき、コピーして貼るのと、部品を再利用するのとでは、直すときの手間が変わります。左は書いた数だけ直し、右は WorkCard.jsx を1か所直すだけです。

コピーして貼る

<li className="work-card"> <h3>レシピ検索アプリ</h3> <p>web / 2025</p> </li> <li className="work-card"> <h3>買い物メモツール</h3> <p>tool / 2025</p> </li>

WorkCard を値違いで使う

<WorkCard title="レシピ検索アプリ" category="web" year={2025} /> <WorkCard title="買い物メモツール" category="tool" year={2025} />

1 / 5

値を変えて3枚並べる

WorkCard は1つしか書いていません。渡す値を変えて呼ぶだけで、3枚のカードが並びます。

プレビュー
  • レシピ検索アプリ

    web / 2025

  • 買い物メモツール

    tool / 2025

  • 写真ギャラリー

    web / 2026

<ul className="works">
<WorkCard title="レシピ検索アプリ"
title="レシピ検索アプリ"呼ぶたびに値を変える
category="web" year={2025} />
<WorkCard title="買い物メモツール"
category="tool" year={2025} />
<WorkCard title="写真ギャラリー"
category="web" year={2026} />
</ul>

2 / 5

React入門 - 部品を使い回す

数値と文字列の渡し方

year の波かっこの有無で、渡る値の型が変わります。見た目は同じでも中身は別物です。

あとで大小を比べるとき、文字列のままだと思ったとおりに動きません。

書き方year の中身
year={2025}数値の 2025
year="2025"文字列の "2025"
year={"2025"}波かっこの中でも文字列の "2025"

3 / 5

React入門 - 部品を使い回す

件数が増えたら

作品が3件なら手で3行書けます。30件だったらどうでしょうか。

件数が増えるたびに1行足す書き方は、いずれ限界がきます。この面倒さは覚えておいてください。

const works = [ { title: "レシピ検索アプリ", year: 2025 }, { title: "買い物メモツール", year: 2025 }, { title: "写真ギャラリー", year: 2026 }, ]; // このデータを見ながら、 // 人が手でJSXを書き写している

4 / 5

考えてみよう外しても進めます

1枚目の WorkCard に渡した title は、2枚目の WorkCard に影響しますか。

選ぶと、この枚の中で答えと理由を確かめられます。

5 / 5

React入門のコースサムネイル
React入門21レッスン

つくる - カード部品

導入スライド未作成
React入門のコースサムネイル
React入門22レッスン

第3章クイズ

導入スライド未作成