Relay 可辨識在封裝元件中定義的 Figma 元件屬性。概念上,Figma 元件屬性與 Relay 參數類似,但有些許差異。
![圖表 - 向量圖層到向量可繪項目到圖片](https://developer.android.google.cn/static/develop/ui/compose/tooling/relay/images/figma-component-properties/figma_component_properties.png?authuser=19&hl=zh-tw)
一般而言,Figma 元件屬性不需要設定及使用 Relay 外掛程式,因此最好在重疊時,在 Relay 參數中使用這些屬性。不過請注意,Relay 參數允許提供描述性註解,並會沿用至產生的程式碼,Figma 元件屬性則不允許。
如要進一步瞭解不同的元件屬性類型,以及 Relay 如何解讀這些屬性,請參閱下文。
布林屬性
![](https://developer.android.google.cn/static/develop/ui/compose/tooling/relay/images/figma-component-properties/boolean_properties.png?authuser=19&hl=zh-tw)
布林值屬性可控制元素是否要在特定設計中顯示。這樣可以大幅減少元件需要定義的變化版本數量。舉例來說,如果按鈕含有選用圖示,則不需要針對圖示顯示狀態和圖示隱藏狀態分別提供變化版本。
Relay 會遵循封裝元件中的布林值參數,並產生適當的 @Composable 函式簽章。
文字內容
![](https://developer.android.google.cn/static/develop/ui/compose/tooling/relay/images/figma-component-properties/text_properties.png?authuser=19&hl=zh-tw)
文字屬性與 Relay 文字內容參數幾乎相同;唯一的差別在於支援說明文件註解。如果在同一圖層上同時宣告 Relay 參數和文字屬性,則 Relay 會使用參數定義來允許註解。不過,請謹慎使用這種命名方式,避免使用一致的命名方式來避免混淆。
如果特定參數不需要註解,我們會建議您使用 Figma 文字屬性來簡化註解。
執行個體替換屬性
![](https://developer.android.google.cn/static/develop/ui/compose/tooling/relay/images/figma-component-properties/instance_swap_properties.png?authuser=19&hl=zh-tw)
執行個體替換屬性可讓元件的用戶端替換子項內的執行個體。這在概念上與 Relay 子項參數類似,但有一些重大差異:
適用性:執行個體替換屬性只能套用至執行個體層。但 Relay 子項參數可套用至執行個體、頁框或群組。因此,使用執行個體替換屬性時,需要替換內容本身就是元件,而 Relay 則允許內容成為任何圖層的子階層。
範圍:執行個體替換屬性只能在元件階層的頂層元件中設定值。相反地,在階層中的任何層級 (參數不會向父項層級公開) 設定 Relay 子項參數。
Relay 可辨識在封裝元件上宣告的執行個體替換屬性,並盡可能將其視為與子項參數相同的屬性 (例如在產生的程式碼中輸出相同的函式簽章)。如果在執行個體圖層宣告了 Relay 子項參數,其定義優先順序會高於該圖層上宣告的例項替換屬性 (如有)。
與文字屬性一樣,在同一圖層上同時使用 Figma 元件屬性和 Relay 參數,可能會造成命名不一致的問題。不過,由於子項參數在執行個體替換屬性的功能方面有顯著差異,因此我們沒有針對哪些情況提出大量建議。兩者都是可能的。該元件的預期使用方式會影響這項決定。
變化版本屬性
![](https://developer.android.google.cn/static/develop/ui/compose/tooling/relay/images/figma-component-properties/variant_properties.png?authuser=19&hl=zh-tw)
當元件包含多個變化版本時,系統會自動建立變化版本屬性。Relay 支援變化版本屬性,將其轉譯為產生的程式碼中的列舉值。
設計人員也可以宣告 Relay 參數,以在封裝的元件中為執行個體圖層顯示變化版本屬性。