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