🕌
ESLintのreact/require-default-propsはOFFにしよう
問題
下記のようなReactコンポーネントのPropsの型定義を書く。
type FieldProps = {
children: React.ReactNode
label?: string
className?: string
}
label
とclassName
はoptionalなので、デフォルト値をdefaultProps
で定義しろと、
ESLintのエラーが出てしまう😥
propType "label" is not required, but has no corresponding defaultProps declaration. eslint(react/require-default-props)
これはどう対処するのがよいか?🙄
結論
今どきはReactのdefaultProps
は使わず、デフォルト引数を使う方が推奨らしいので、
このルールはOFF
にしておいて問題なさそう⭐
'react/require-default-props': 'off',
デフォルト引数を使ってデフォルト値を設定する例:
export const Field = ({
children,
label = 'デフォルト',
className = 'text-sm',
}: FieldWrapperProps) => {
return (
{/* 中略 */
)
補足
人気のairbnbのルールを導入している場合は、デフォルトで下記のようになっているので、
自分で上書きしてOFF
にする必要がある。
'react/require-default-props': ['error', {
forbidDefaultForRequired: true,
}],
Discussion