🐣
React実践の教科書 P229〜231
作成日:
2022/01/12
2
今日やったこと
- 「モダンJavaScriptの基本から始める React実践の教科書」 P229〜231
- 8-6 省略可能な型の定義
学習メモ
開発していく中で Props の中には「設定される時もあればされない時もある」といったものも多くなってくる
そういった場合、user.ts型定義の各プロパティ名のあとに省略可能を明示する「?」をつける
export type User = {
id: number;
name: string;
age: number;
personalColor?: string;
};
「?」をつけることでpersonalColor
の型定義は string | undefined
と同義になる
ここで、「personalColor
が未設定の場合は、文字色はデフォルトで灰色にしたい」といった要件があったとすれば、例えば分割代入のデフォルト値を設定することで対応可能
import type { FC } from "react";
import type { User } from "../types/user";
export const ListItem: FC<User> = props => {
const { id, name, age, personalColor = "gray" } = props;
return (
<p style="{{ color: personalColor }}">
{id}:{name}{(age)}
</p>
);
};
また、前段で解説したFCやVFCできちんと型定義している場合、Reactコンポーネントに使用できるdefaultProps
を使ってデフォルト値を設定しておくこともできる
import type { FC } from "react";
import type { User } from "../types/user";
export const ListItem: FC<User> = props => {
const { id, name, age, personalColor } = props;
return (
<p style="{{ color: personalColor }}">
{id}:{name}{(age)}
</p>
);
};
ListItem.defaultProps = {
personalColor: "grey";
};
これらのように省略可能なPropsに対してデフォルトの挙動を設定しておくことで、
よりほかの開発者が見た時に理解しやすいコンポーネントとなるし
Propsが未設定の場合も安定して動作させることが可能となる
所感
Propsにデフォルトの値を設定する方法について学びました。よく使いそうです。