npm install flowlistvueI found I have 20 downloads on NPM;
So I decide to do my best to improve this component;
list | 传入的数据 | Array | [] | N |order | 每页是否按序,list长度每次增加时,新增的是否按照原顺序依次添加,为true时依次添加,为false时优化排序(使每列相差最小)后添加 | boolean | flase | N |lineNum | 有多少列 | Number>=2 | 2 | N | rowGap | 每行之间的间距,单位包括(px,rem,vw) | String | 10px | N |justifyContent | 每列如何排序, spaceBetween两端对齐;Number或 spaceBetween或spaceAround | spaceBetween | N | html
import flowlist from 'flowlistvue';
Vue.use(flowlist);
/*data为插槽props,就是list中这一项的item/
/*自定义每项的内容/
``不按序时,每页内容不变,但是会根据每列的长度自动调整顺序,使每列总长度相差最小
* a, 要求块的高度在渲染后不会再动态改变
>比如有个img,那么这个img开始时就要定高(在接口要求返回图片的高度),
组件不处理“除文字外其他内容加载导致之后块大小变化”的逻辑
* b, 不会修改块的样式,也不会影响块内数据的绑定
>只是给每个$slots.default加上了定位容器,每个内容块本身不受影响
* c, 乱序时的性能
>每次新增的块可以乱序,乱序可以使每列的总长度相当接近,比较美观
* d, ⚠️每个块必须规定一个唯一key属性
* e, list重新赋值(不是同一个引用)会重新渲染
>如果块内的内容增加或减少导致了高度增加或塌陷,可以使用this.list = [...this.list]重新绘制,
但是会导致“该位置之后的”块重新排列,造成不好的体验,所以尽量不要在排列好之后改变块的高度
* f, 只处理了每列宽度相同的情况