質問するログイン新規登録

回答編集履歴

3

修正

2025/12/13 11:41

投稿

ミスターymmr
ミスターymmr

スコア64

answer CHANGED
@@ -1,6 +1,6 @@
1
1
  > スタイルをclassNameで渡すか、専用のprops(例:size, variantなど)で渡すかの判断
2
2
 
3
- props(variant/size…)を優先するケースとしては、「意味を持つ見た目違い」 を提供したいときです。
3
+ props(variant/size…)を優先するケースとしては、デザインシステムで定義された「意味のあるバリエーション」 を提供したいときです。
4
4
  具体的には以下のケースです。
5
5
  - variant="primary" | "secondary" みたいに、見た目がデザイン上のルールと直結している
6
6
  - size="sm" | "md" | "lg" が、余白・高さ・フォントなど複数のスタイル束を一貫して切り替える
@@ -8,9 +8,10 @@
8
8
 
9
9
  こういう場合、classNameで自由にされると、 “primaryなのに角丸が違う” といったことが起きるため、propsを優先する場合が多いです。
10
10
 
11
- className 優先(あるいは併するケースとしては、「意味はないけど、レイアウト都合で調整したい」 場合です。
11
+ classNameを使用するケースとしては、「レイアウト調整」 場合です。
12
12
  具体的には以下のようなケースです。
13
13
  - margin, width, flex, grid など 親レイアウト文脈の調整
14
14
  - “見た目の種類”ではなく、周辺の配置をいじりたいだけ
15
15
 
16
- ここをpropsで全部受けると mt, mb, w, px みたいなprops地獄になりやすいため、「レイアウトはclassNameで逃がす」 が現実的かと
16
+ ここをpropsで全部受けると mt, mb, w, px みたいなprops地獄になりやすいため、「レイアウトはclassNameで逃がす」 が現実的かと
17
+ また、margin/paddingなどコンポーネントの外側調整は親の責務でclassNameで受け取ります

2

追記

2025/12/13 11:28

投稿

ミスターymmr
ミスターymmr

スコア64

answer CHANGED
@@ -11,4 +11,6 @@
11
11
  className を優先(あるいは併用)するケースとしては、「意味はないけど、レイアウト都合で調整したい」 場合です。
12
12
  具体的には以下のようなケースです。
13
13
  - margin, width, flex, grid など 親レイアウト文脈の調整
14
- - “見た目の種類”ではなく、周辺の配置をいじりたいだけ
14
+ - “見た目の種類”ではなく、周辺の配置をいじりたいだけ
15
+
16
+ ここをpropsで全部受けると mt, mb, w, px みたいなprops地獄になりやすいため、「レイアウトはclassNameで逃がす」 が現実的かと

1

途中で送信してしまったので続きを記入

2025/12/13 11:27

投稿

ミスターymmr
ミスターymmr

スコア64

answer CHANGED
@@ -1,13 +1,14 @@
1
1
  > スタイルをclassNameで渡すか、専用のprops(例:size, variantなど)で渡すかの判断
2
2
 
3
- props(variant/size…)を優先するケースとしては、「意味を持つ見た目の違い」 を提供したいときではないでしょうか
3
+ props(variant/size…)を優先するケースとしては、「意味を持つ見た目の違い」 を提供したいときで
4
4
  具体的には以下のケースです。
5
5
  - variant="primary" | "secondary" みたいに、見た目がデザイン上のルールと直結している
6
6
  - size="sm" | "md" | "lg" が、余白・高さ・フォントなど複数のスタイル束を一貫して切り替える
7
7
  - デザイナー/PdMとの会話でも「primaryのボタン」みたいに言葉で通じる
8
8
 
9
- こういう場合、classNameで自由にされると、
9
+ こういう場合、classNameで自由にされると、 “primaryなのに角丸が違う” といったことが起きるため、propsを優先する場合が多いです。
10
10
 
11
- → この場合、classNameで自由にされると “primaryなのに角丸が違う” とかが起きて、設計図が壊れがちのでprops中心が強いです
11
+ className を優先(あいは併用)するケース味はいけどレイアウト都合で調整した」 場合です
12
-
12
+ 具体的には以下のようなケースです。
13
- > そもそもclassNameを外部から受け渡せるようにするかうか判断
13
+ - margin, width, flex, grid な 親レイアウト文脈調整
14
+ - “見た目の種類”ではなく、周辺の配置をいじりたいだけ