摘要:不然每個(gè)用到這個(gè)組件的還得傳一遍重復(fù)的回調(diào)函數(shù)實(shí)際上函數(shù)功能是一樣的。如果要顯示隱藏的內(nèi)容包含很多標(biāo)簽,且不希望額外增加一個(gè)空標(biāo)簽當(dāng)然,該組件還有很多不足,比如回調(diào)函數(shù)還是不能個(gè)性化傳遞等等。
需求
寫一個(gè)簡單的列表組件,每一列包含標(biāo)題、其他信息、按鈕點(diǎn)擊事件、該項(xiàng)隱藏與否等配置信息。
設(shè)計(jì)基本的數(shù)據(jù)結(jié)構(gòu) - 初始思路第一次寫的時(shí)候?qū)懥藗€(gè)map結(jié)構(gòu)的。emmmm...
寫這樣的數(shù)據(jù)結(jié)構(gòu),因?yàn)槌跏冀M件設(shè)計(jì)思考不足。
目標(biāo)是展示的所有文案信息都是直接在默認(rèn)配置的基礎(chǔ)上混合就可以,按鈕的callback函數(shù)由于不了解業(yè)務(wù)的情況,誤以為各個(gè)引入此公共組件的模塊都不一樣。所以每個(gè)都多帶帶加了回調(diào)配置項(xiàng)。好處可能是靈活一點(diǎn),但是后來看來,對(duì)這個(gè)需求不是特別契合。
const defaultList = { item1: { title : "發(fā)布", btnDisabled: false, btnCallback: null, showItem:true, }, item2: { title : "收藏", btnDisabled: false, btnCallback: null, showItem:true, }, ... }設(shè)計(jì)基本的數(shù)據(jù)結(jié)構(gòu) - 改進(jìn)思路
實(shí)際上,發(fā)現(xiàn)每個(gè)按鈕回調(diào)完成的功能大同小異。似乎可以先去掉回調(diào)函數(shù)傳參。不然每個(gè)用到這個(gè)組件的還得傳一遍重復(fù)的回調(diào)函數(shù)(實(shí)際上函數(shù)功能是一樣的)。所以,列表list,組件ul li基本可以放在一個(gè)頁面里。這個(gè)組件應(yīng)該寫得更重一點(diǎn)。因此結(jié)構(gòu)替換成數(shù)組。用type屬性來充當(dāng)遍歷時(shí)候的辨別節(jié)點(diǎn)判斷依據(jù),而非上面的對(duì)象key值那么麻煩。前面用showItem屬性:true/false來控制項(xiàng)的隱藏與否也可以去除,換一種方式做篩選:
const defaultList = [ { title : "發(fā)布", btnDisabled: false, btnCallback: null, showItem:true, //這個(gè)不需要了 type: "1" }, { title : "收藏", btnDisabled: false, btnCallback: null, showItem:true, type: "2" }, ... ]基本的組件結(jié)構(gòu) - 初始思路
一開始考慮的是每個(gè)回調(diào)函數(shù)都不一樣,那組件里只寫li,在父組件做遍歷,把每項(xiàng)的Item傳進(jìn)來。這樣的話,實(shí)際組件的功能還是比較簡單的。定制化需求都放在父組件,父組件需要配置的地方比較多。
{{item.title}}
使用的時(shí)候比較麻煩:
老實(shí)說,也沒有那么多需要定制的東西,改進(jìn)后把所有的東西都基本放在了組件內(nèi)部,使用的時(shí)候只需要引入組件基本就行了。
并且利用數(shù)組的filter,incluedes,sort,indexOf實(shí)現(xiàn)數(shù)據(jù)的篩選與排序:
{{item.title}}
現(xiàn)在使用就很簡單了,直接引入組件,并且可通過傳一個(gè)帶標(biāo)題的數(shù)組,自定義順序和需要被展示的項(xiàng):
還可以利用h5元素對(duì)整個(gè)模塊進(jìn)行顯示隱藏
h5的元素自帶display:none功能。顯示隱藏有許多方法,可以試試這個(gè)。如果要顯示隱藏的內(nèi)容包含很多標(biāo)簽,且不希望額外增加一個(gè)空標(biāo)簽:
當(dāng)然,該組件還有很多不足,比如回調(diào)函數(shù)還是不能個(gè)性化傳遞等等。但是優(yōu)化成什么樣最終還是要和業(yè)務(wù)需求掛鉤。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/104905.html
摘要:注此項(xiàng)目純屬個(gè)人瞎搞,正常下單請(qǐng)選擇餓了么官方客戶端。目前下單功能已經(jīng)實(shí)現(xiàn),下單功能完全采用官網(wǎng)真實(shí)數(shù)據(jù),可以控制官網(wǎng)發(fā)短信或者打電話到指定的手機(jī)號(hào)碼,下單后可以在手機(jī)中查看并且付款。 前言 vue2的發(fā)布后自己也研究了一段時(shí)間,奈何公司的技術(shù)棧是以react為主,沒有機(jī)會(huì)好好利用vue2去做一個(gè)完整的項(xiàng)目。雖然寫了幾個(gè)demo,但和寫一個(gè)完整的項(xiàng)目還是有很大差別的。于是自己想著用空余...
摘要:開發(fā)前準(zhǔn)備環(huán)境版本微信開發(fā)工具最新版最新版文檔本項(xiàng)目技術(shù)棧基于微信小程序快速開始克隆項(xiàng)目進(jìn)入項(xiàng)目安裝依賴啟動(dòng)構(gòu)建打開微信開發(fā)工具,導(dǎo)入項(xiàng)目目錄結(jié)構(gòu)構(gòu)建相關(guān)配置相關(guān)打包相關(guān)第三方模塊源代碼全局公用方法所有頁面文件業(yè)務(wù)組件圖片字體等靜態(tài)資源業(yè)務(wù) 開發(fā)前準(zhǔn)備 環(huán)境: Node.js LTS版本 微信Web開發(fā)工具 最新版 git 最新版 文檔: 本項(xiàng)目技術(shù)棧基于 ES2016 VueJS ...
摘要:前言這個(gè)項(xiàng)目是利用工作之余寫的一個(gè)模仿微信的單頁面應(yīng)用,整個(gè)項(xiàng)目包含個(gè)頁面,涉及實(shí)時(shí)群聊,機(jī)器人聊天,同學(xué)錄,朋友圈等等,后續(xù)頁面還是開發(fā)中。 前言 這個(gè)項(xiàng)目是利用工作之余寫的一個(gè)模仿微信app的單頁面應(yīng)用,整個(gè)項(xiàng)目包含27個(gè)頁面,涉及實(shí)時(shí)群聊,機(jī)器人聊天,同學(xué)錄,朋友圈等等,后續(xù)頁面還是開發(fā)中。寫這個(gè)項(xiàng)目主要目的是練習(xí)和熟悉vue和vuex的配合使用,利用socket.io實(shí)現(xiàn)實(shí)時(shí)聊...
閱讀 1729·2021-11-22 12:09
閱讀 1459·2019-08-30 13:22
閱讀 2092·2019-08-29 17:00
閱讀 2642·2019-08-29 16:28
閱讀 2953·2019-08-26 13:51
閱讀 1181·2019-08-26 13:25
閱讀 3243·2019-08-26 12:14
閱讀 3014·2019-08-26 12:14