從乙個confirm
元件開始,一步步寫乙個可插拔式的元件。
處理乙個正常的支付流程(比如支付寶購買**)
點選購買按鈕
如果風險等級不匹配則:彈確認框(confirm)
使用者確認風險後:彈出支付方式選擇彈窗(dialog)
選擇好支付方式後:彈窗呼叫指紋驗證(dialog)
如果關閉指紋驗證:提示是否輸入密碼(dialog)
彈出輸入密碼的鍵盤(自定義鍵盤)
當然還有密碼加班
如果密碼輸入錯誤則彈出修改/重試提示(confirm)
...再次彈出鍵盤
大約6個彈窗...
首先嘗試以乙個平常的註冊元件實現
confirm
通過v-model="isshow"
切換展示,通過@onconfirm
和oncancel
接收點選事件。
元件**
}}
使用**
內容部分
那麼用它來完成上面的需求吧。
openriskconfirm() ,
onriskcancel() ,
onriskconfirm() ,
openpaymelist()
// ... 巴拉巴拉
// ... 大約需要 3*6 = 18 個方法才能完成需求(其他請求類的還不算)
如果你能接受,但是:
**改起來會是乙個災難,因為就算業務**是你寫的,你一段時間後也不一定能記得流程,而且,**看起來沒有任何的連續性,只能乙個個方法看。
針對上面的業務流程,嘗試使用現在比較流行的的彈窗。
元件:更改接收方法位置,從props
放到$data
中
}}}
註冊到全域性
import confirm from './confirm.vue'
export default
}).$mount($ele);
};vue.prototype.$confirm = portfoliomsg;}}
呼叫
this.$confirm(,
oncancel: () =>
})
哪啊麼用它完成上面的需求會如何?
this.$confirm(,
oncancel: () => )}}
})},
oncancel: () => })}
})},
oncancel: () =>
})
這樣看起來確實清晰了很多,**量也少了很多,不需要註冊全域性的元件可以通過在methods
中封裝乙個方法實現,維護起來也方便了很多。但是:**地獄有木有?也只是稍微輕鬆一點,可不可以再優化一下呢?
ajax 的**地獄是通過promise
實現的,那麼上面的元件**地獄是不是也可以通過promise
實現呢?
import confirm from './confirm.vue'
export default
}).$mount($ele);
return new promise((resolve, reject) => )
};vue.prototype.$confirm = portfoliomsg;}}
使用一下
this.$confirm().then(res => ).catch(res => )
那麼**地獄的問題很輕鬆的就解決了,可讀性很高,中間新增刪除邏輯也變的特別方便,維護起來成本大大的降低了。具體**自己抽象一遍或許更好哦。
譯者寫了乙個 react + hooks 的 ui 庫,方便大家學習和使用,
react + hooks 專案實戰
分析哪些元件是「可熱插拔」的
在2 4 7環境下,使用可熱插拔硬體元件非常有利。所謂可熱插拔,是指元件能夠在不導 致任何系統停工的情況下,在系統執行時動態地將元件插入系統或者從系統中拔出的特點。不同的提供商允許不同的元件進行熱插拔,這些元件包括電源系統到 c p u之類的任何裝置,例如記憶體板 i o板 硬碟驅動器。熱插拔允許對...
我心中的核心元件(可插拔的AOP) 大話開篇及目錄
回到佔佔推薦部落格索引 我心中的核心元件,核心元件就是我認為在專案中比較常用的功能,如日誌,異常處理,訊息,郵件,佇列服務,排程,快取,持久化,分布式檔案儲存,nosql儲存,ioc容器,方法攔截等等。對於以上內容可以說即是乙個大餐,又是乙個挑戰,就讓我帶著大家去迎接這份挑戰吧,呵呵!aop即面向切...
vue的元件化開發(元件通訊,插槽,遞迴元件)
1.vue元件的通訊 包括子通父,父通子,兄弟通訊,祖代與後代通訊,vuex全域性狀態管理。1.1 父向子通訊 props屬性和refs屬性。1.1.1 props屬性 在子元件中 props age1 number,string 存在多種型別。在父元件中 1.1.2 refs屬性 通過this.r...