簡體   English   中英

創建一個組件,它是兩個組件的“混合”(從2個組件擴展)

[英]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-tox-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-tolink-to組件的擴展,以實現mixin。

我放棄了組合,盡管這似乎是正確的道路,但從長遠來看,將內部組件的實現映射到包含組件將是一個噩夢。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM