[英]Creating a component that is the “mix” of two components (extending from 2 components)
我正在構建一組組件,這些組件的行為可能有所不同。
更具體地說,我有一個x-tag
組件,它可以充當<span>
(僅呈現文本)或<a>
(也呈現文本並鏈接到另一條路線)。
對於“鏈接”部分,我使用的是Ember提供的鏈接組件 (這是link-to
),而不是自己重新實現所有路由邏輯。
理想的情況是只包含兩個組件:
x-tag
是處理基本邏輯的簡單文本版本。 x-tag-link-to
,鏈接版本,它應該是從link-to
和x-tag
組件擴展的組件。 由於您不能從兩個組件擴展,因此我將x-tag
組件中的邏輯移到了tag
mixin中。 因此組件最終如下所示:
x-tag
,實現tag
混合的組件。 x-tag-link-to
,擴展了link-to
組件並實現tag
mixin的組件。 這解決了問題,但在多個文件中具有邏輯混亂,我也有很多組件,例如標簽也有鏈接版本,用很多具有幾乎整個組件邏輯的mixins填充mixins文件夾。 那只是感覺不對 ,還是這是正確的方法?
如果需要,我可以提供代碼示例。
正如Gennady Dogaev在評論中所說,我最終使用了mixins。
結果是這樣的:
mixins/components/x-tag
:具有標簽組件邏輯。 components/x-tag
:實現混入的空組件。 components/x-tag-link-to
: link-to
組件的擴展,以實現mixin。 我放棄了組合,盡管這似乎是正確的道路,但從長遠來看,將內部組件的實現映射到包含組件將是一個噩夢。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.