React入門 ・ Chapter 16
条件表示 出したり、消したり
コード演習 ・ 冒頭を無料公開中
いいねが0件のときは「まだいいねがありません」、1件以上なら件数を表示——状況によって画面の中身を変えたい場面は、アプリなら必ず出てきます。stateで「状況」は持てるようになりました。この章では、それを表示の分岐に繋ぎます。
窓には「文」が入らない
どうやって表示するか、しないかのコードをReactで実装しようかと思う時、素直に考えると、if文を窓に入れたくなります。
return <p>{if (count > 0) { ... }}</p>; // × エラー
これは書けません。チャプター8で「{ } の窓には値になる式が入る」と言いました。実はあれは「入るもの」の定義であると同時に「入らないもの」の宣言でもありました——if文は文であって、値にならないので、窓に入れません。
では条件で表示を変えたいときはどうするか。道具は2つです。
道具① 三項演算子——「もし〜なら A、でなければ B」
const LikeStatus = ({ count }: { count: number }) => { return <p>{count > 0 ? `いいね ${count}件` : "まだいいねがありません"}</p>; };
条件 ? Aの値 : Bの値 ——これが三項演算子です。読み方は「条件が正しいならA、違うならB」。if文と違って、全体がひとつの値になるので窓に入れられます。「?」が「もし」、「:」が「でなければ」と読んでください。
値の部分にはタグも書けます。
{isLoggedIn ? <p>ようこそ</p> : <p>ログインしてください</p>}
道具② &&——「〜のときだけ出す」
「条件を満たすときだけ表示、満たさないときは何も出さない」という場面には、専用の短縮形があります。
コード演習はブラウザ上でそのまま実行できます
本文の残り、エディタ・テスト実行・解答コード・ヒントはプラン加入後に利用できます。