Relay は、パッケージ化されたコンポーネントで定義された Figma コンポーネント プロパティを認識します。概念的には、Figma コンポーネントのプロパティは Relay パラメータに似ていますが、いくつか違いがあります。
一般に、Figma コンポーネントのプロパティは Relay プラグインの設定と使用を必要としないため、重複がある場合は Relay パラメータで使用することをおすすめします。ただし、Relay パラメータでは、生成されたコードに引き継がれる説明コメントを使用できますが、Figma コンポーネント プロパティでは説明できません。
さまざまなコンポーネント プロパティ タイプと Relay による解釈方法について詳しくは、下記をご覧ください。
ブール値プロパティ
ブール値プロパティは、特定のデザインに要素を表示するかどうかを制御します。これにより、コンポーネントで定義する必要があるバリアントの数を大幅に削減できます。たとえば、オプションのアイコンを含むボタンの場合、アイコン表示状態とアイコン非表示状態に別々のバリアントは必要ありません。
Relay は、パッケージ化されたコンポーネントのブール値パラメータを尊重し、適切な @Composable 関数シグネチャを生成します。
テキストのプロパティ
テキスト プロパティは、Relay のテキスト コンテンツ パラメータとほぼ同じです。唯一の違いは、ドキュメントのコメントがサポートされていることです。Relay のパラメータとテキスト プロパティの両方が同じレイヤで宣言されている場合、Relay はパラメータ定義を使用してコメントを許可します。ただし、このケースでは一貫した命名方法を使用して混乱しないように注意が必要です。
特定のパラメータにコメントが不要な場合は、わかりやすくするために Figma テキスト プロパティを使用することをおすすめします。
インスタンスのスワップ プロパティ
インスタンスのスワップ プロパティを使用すると、コンポーネントのクライアントが子内のインスタンスをスワップできます。概念的には、これはリレーの子パラメータと似ていますが、いくつかの重要な違いがあります。
適用範囲: インスタンスのスワップ プロパティは、インスタンス レイヤにのみ適用できます。ただし、リレーの子パラメータはインスタンス、フレーム、グループに適用できます。そのため、インスタンスのスワップ プロパティを使用するには、スワップされたコンテンツ自体がコンポーネントである必要がありますが、Relay では、コンテンツをレイヤの任意の下位階層にできます。
スコープ: インスタンスのスワップ プロパティには、コンポーネント階層の最上位コンポーネントでのみ値を設定できます。一方、リレーの子パラメータは、パラメータが親レベルに公開されない階層内の任意のレベルで設定されます。
Relay は、パッケージ化されたコンポーネントで宣言されたインスタンス スワップ プロパティを認識し、可能な限り子パラメータと同等に扱います(たとえば、生成されたコードで同じ関数シグネチャを出力します)。インスタンス レイヤで Relay の子パラメータが宣言されている場合、その定義は、そのレイヤで宣言されているインスタンス スワップ プロパティ(存在する場合)よりも優先されます。
テキスト プロパティと同様に、同じレイヤで Figma コンポーネント プロパティと Relay パラメータの両方を使用すると、名前に一貫性がない場合に混乱を招く可能性があります。ただし、子パラメータにはインスタンスのスワップ プロパティの機能に大きな違いがあるため、どのパラメータを使用すべきかについて包括的な推奨事項はありません。どちらも可能性があります。この判断は、コンポーネントの用途によって決まります。
パターンのプロパティ
コンポーネントに複数のバリアントがある場合、バリアント プロパティが暗黙的に作成されます。Relay は、バリアント プロパティを、生成されたコードの列挙値に変換することによってサポートします。
デザイナーは、パッケージ化されたコンポーネント内のインスタンス レイヤのバリアント プロパティを公開する Relay パラメータを宣言することもできます。