聞きたいこと
Reactでコンポーネントを設計する際、スタイルの受け渡し方法についてみなさんがどのような判断基準を持っているか、ご意見をお聞かせいただきたいです。
具体的には以下の2点についてです。
- スタイルをclassNameで渡すか、専用のprops(例:size, variantなど)で渡すかの判断
- そもそもclassNameを外部から受け渡せるようにするかどうかの判断
背景
コンポーネントを作成する際、スタイルのカスタマイズ性をどこまで許容するかで迷うことがあります。
TypeScript
1// パターンA: classNameで渡す 2<Button className="my-custom-style" /> 3 4// パターンB: propsで渡す 5<Button size="large" variant="primary" /> 6 7// パターンC: classNameを受け付けない(内部で完結) 8<Button /> // 外部からのスタイル上書き不可
classNameを許容すると柔軟性は上がりますが、意図しないスタイルの上書きが起きたり、コンポーネントの一貫性が損なわれるリスクもあると感じています。
一方で、propsのみだと想定外のカスタマイズ要件に対応できないこともあり...。
お聞きしたいこと
- みなさんはどのような基準で判断されていますか?
- チームや個人で運用ルールを決めていますか?
- 「この場合はclassName、この場合はprops」のような具体的な使い分け例があれば教えていただけると嬉しいです
正解を求めているというよりは、いろいろな考え方を知りたいと思っています。
お気軽にご意見いただければ幸いです。