Solid と React の違い
Solid の JSX は属性をそのまま DOM に反映するため、stroke-width や class などの SVG 属性はファイルに書かれたとおりに保持されます。React のようにキャメルケースや className に書き換える必要はありません。
Solid の props はリアクティブなゲッターなので、分割代入するとリアクティブ性が失われます。size プロパティを有効にすると、ツールは splitProps で size と残りの props を分け、残りを <svg> に展開するため、すべての値がリアクティブなまま保たれます。
生成される TypeScript の型
props は solid-js からインポートした JSX.SvgSVGAttributes<SVGSVGElement> 型で、すべての SVG 属性とイベントハンドラをカバーします。size オプションを有効にすると、型に { size?: number | string } が追加されます。
SolidStart での使い方
始め方:
- 出力を src/components フォルダに IconName.tsx として保存します。
- インポートして <IconName size={18} class="icon" /> と描画します。
- currentColor を使えば周囲の文字色を継承できます。
- ref は通常の ref プロパティで渡せます。Solid では forwardRef は不要です。