摘要:為了適應表單校驗的靈活性,我們使用這種模式會事半功倍,提供校驗信息的組件僅僅聲明渲染表單錯誤提示信息需要設計的狀態變量即可,比如等等,對于錯誤信息的文案及樣式,統統交由錯誤提示組件的使用者完成。
06 Use
Render Props最近在React社區中引起了轟動,但是與之類似的模式在Angular中似乎并沒有得到太多關注。我在之前寫的文章提及過,TemplateRefs就是Angular中的Render Props,同時我會在這篇文章中列舉一個簡單易用的例子。
Note: TemplateRef是一個類名而是一個html標簽,它們本質上是相同的。不過你可能會在項目中更頻繁地使用 ,但是在網上你可以很容易的搜索到關于TemplateRef的知識,因為 會給你提供很多html5中的標簽的信息。
我們已有的實現中,使用自定義內容指令(content directives)。當組件作者提前了解使用該toggle組件的父組件所需要的狀態時,那么它將會正常的運作。但是如果父組件所需要的狀態并不在我們的設想之內,我們該怎么辦?
目標將toggle組件的狀態直接提供給父組件,同時允許父組件提供相應的渲染視圖(view)。
實現這里
從toggle組件中傳入的狀態是通過let關鍵字在父組件的
let關鍵字的使用方式類是這樣的:let-templatevar="inputvar",templatevar指代在
這種語法會有效地避免命名沖突,比如在父組件作用域中已經有一個inputvar變量了。
成果stackblitz演示地址
譯者注這種組件設計模式按我個人的理解,其實是依賴倒置原則在視圖渲染層的一種延伸,為什么這么說呢?是因為通常情況下子組件視圖的渲染邏輯取決于傳入的props狀態和自身提供的模板,這在大多數情況下不會造成任何困擾,但是當我們無法在提前得知我們需要渲染什么的時候,這個問題就會變得十分棘手。
一種解決方法,我們可以使用條件渲染指令,根據傳入的狀態來判定組件渲染的狀態,這種解決方法在情況比較少的情況下是可以解決問題的,但是當情況數量十分龐大的情況下,增加過多的條件判定會致使子組件的模板代碼量劇增,同時降低性能,因為每次渲染都會進行若干次條件邏輯判斷。
除了上面的解決方法,就是使用正文中所提及的模式了,這種模式將子組件視圖的渲染邏輯倒置為子組件僅僅聲明模板中所會使用的狀態變量,對于這些變量和模板的注入工作,全權賦予父組件,因此會使子組件的復用性和可測試性大大提高。
正文中僅列舉了一個簡單的例子中,我這里在簡單提及一個實際工作可能會用到的例子,就是表單校驗的錯誤提示組件,一般前端組件設計但凡涉及表單,都會是十分復雜的,更不用說校驗這種靈活性很高的功能了。
為了適應表單校驗的靈活性,我們使用這種模式會事半功倍,提供校驗信息的組件僅僅聲明渲染表單錯誤提示信息需要設計的狀態變量即可,比如dirty、touched等等,對于錯誤信息的文案及樣式,統統交由錯誤提示組件的使用者完成。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/107828.html
摘要:原文如那樣,我們將使用一個相對簡單的組件來說明這些模式。組件的職責是僅僅是管理一個簡單的布爾值狀態屬性。文件夾并且特別是,將針對庫在不同的情形下的使用做出相應的改變。 寫在前頭 Angular到現在已經到5.x的版本了,對于MVVM框架我首先接觸的是angularjs后來又轉為react,之后換了工作因項目技術棧的原因又轉換到之前的angularjs,在實際工作中實施了公司幾個比較重要...
摘要:目標提供一些方法或指令給組件使用者,使其可以與所提供的元素交互并修改它們。這個指令擁有一個屬性并與組件共享,該屬性將決定屬性的值是還是。 07 使用 Content Directives 原文: Use Content Directives 因為父組件會提供所有相關的 UI 元素(比如這里的 button),所以 toggle 組件的開發者可能無法滿足組件使用者的一些附加需求,比如,...
摘要:同時,依賴注入機制是依附于組件本身存在的,并不依附于模板的層級關系,因此不會面臨問題二的困擾。對于木偶組件本身,往往作為消費者存在,這種情況下使用機制可能會達到更好的效果。 03-a Communicate Between Components Using Dependency Injection 原文: Communicate Between Components Using Dep...
摘要:相關話題裝飾器將會返回在組件標簽包含的內容中,第一個符合選擇器的子組件或者子指令的引用,比如。或者裝飾器是用來獲取在組件內部模板中使用的單個或者多個組件的。 02 Write Compound Components 原文: Write Compound Components 目標 我們需要實現的需求是能夠使使用者通過組件動態的改變包含在它內部的內容。 實現 我們可以把toggle抽象...
摘要:實現模板引用變量是獲取某個元素組件或者指令引用的一種方式,這個引用可以在當前的視圖模板中的任何地方使用。它們通常是以或者的語法聲明的。成果在中,我通過打印模板引用變量所指向的類的名字來演示它所代表的引用。 05 Handle Template Reference Variables with Directives 原文: Handle Template Reference Variab...
閱讀 3010·2021-10-08 10:18
閱讀 730·2019-08-30 15:54
閱讀 1061·2019-08-29 18:43
閱讀 2433·2019-08-29 15:33
閱讀 1298·2019-08-29 15:29
閱讀 1598·2019-08-29 13:29
閱讀 1022·2019-08-26 13:46
閱讀 1693·2019-08-26 11:55