摘要:不然每个用到这个组件的还得传一遍重复的回调函数实际上函数功能是一样的。如果要显示隐藏的内容包含很多标签,且不希望额外增加一个空标签当然,该组件还有很多不足,比如回调函数还是不能个性化传递等等。
需求
写一个简单的列表组件,每一列包含标题、其他信息、按钮点击事件、该项隐藏与否等配置信息。
设计基本的数据结构 - 初始思路第一次写的时候写了个map结构的。emmmm...
写这样的数据结构,因为初始组件设计思考不足。
目标是展示的所有文案信息都是直接在默认配置的基础上混合就可以,按钮的callback函数由于不了解业务的情况,误以为各个引入此公共组件的模块都不一样。所以每个都多带带加了回调配置项。好处可能是灵活一点,但是后来看来,对这个需求不是特别契合。
const defaultList = { item1: { title : "发布", btnDisabled: false, btnCallback: null, showItem:true, }, item2: { title : "收藏", btnDisabled: false, btnCallback: null, showItem:true, }, ... }设计基本的数据结构 - 改进思路
实际上,发现每个按钮回调完成的功能大同小异。似乎可以先去掉回调函数传参。不然每个用到这个组件的还得传一遍重复的回调函数(实际上函数功能是一样的)。所以,列表list,组件ul li基本可以放在一个页面里。这个组件应该写得更重一点。因此结构替换成数组。用type属性来充当遍历时候的辨别节点判断依据,而非上面的对象key值那么麻烦。前面用showItem属性:true/false来控制项的隐藏与否也可以去除,换一种方式做筛选:
const defaultList = [ { title : "发布", btnDisabled: false, btnCallback: null, showItem:true, //这个不需要了 type: "1" }, { title : "收藏", btnDisabled: false, btnCallback: null, showItem:true, type: "2" }, ... ]基本的组件结构 - 初始思路
一开始考虑的是每个回调函数都不一样,那组件里只写li,在父组件做遍历,把每项的Item传进来。这样的话,实际组件的功能还是比较简单的。定制化需求都放在父组件,父组件需要配置的地方比较多。
{{item.title}}
使用的时候比较麻烦:
老实说,也没有那么多需要定制的东西,改进后把所有的东西都基本放在了组件内部,使用的时候只需要引入组件基本就行了。
并且利用数组的filter,incluedes,sort,indexOf实现数据的筛选与排序:
{{item.title}}
现在使用就很简单了,直接引入组件,并且可通过传一个带标题的数组,自定义顺序和需要被展示的项:
还可以利用h5元素对整个模块进行显示隐藏
h5的元素自带display:none功能。显示隐藏有许多方法,可以试试这个。如果要显示隐藏的内容包含很多标签,且不希望额外增加一个空标签:
当然,该组件还有很多不足,比如回调函数还是不能个性化传递等等。但是优化成什么样最终还是要和业务需求挂钩。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/104905.html
摘要:注此项目纯属个人瞎搞,正常下单请选择饿了么官方客户端。目前下单功能已经实现,下单功能完全采用官网真实数据,可以控制官网发短信或者打电话到指定的手机号码,下单后可以在手机中查看并且付款。 前言 vue2的发布后自己也研究了一段时间,奈何公司的技术栈是以react为主,没有机会好好利用vue2去做一个完整的项目。虽然写了几个demo,但和写一个完整的项目还是有很大差别的。于是自己想着用空余...
摘要:前言这个项目是利用工作之余写的一个模仿微信的单页面应用,整个项目包含个页面,涉及实时群聊,机器人聊天,同学录,朋友圈等等,后续页面还是开发中。 前言 这个项目是利用工作之余写的一个模仿微信app的单页面应用,整个项目包含27个页面,涉及实时群聊,机器人聊天,同学录,朋友圈等等,后续页面还是开发中。写这个项目主要目的是练习和熟悉vue和vuex的配合使用,利用socket.io实现实时聊...
阅读 1711·2021-11-22 12:09
阅读 1451·2019-08-30 13:22
阅读 2082·2019-08-29 17:00
阅读 2634·2019-08-29 16:28
阅读 2945·2019-08-26 13:51
阅读 1174·2019-08-26 13:25
阅读 3236·2019-08-26 12:14
阅读 3006·2019-08-26 12:14