需求
实现一个 Vue 中能使用的栅栏网格,总计每行为 24 份,用户可选择每一列所占份数,左边间隔(可以没有),以及可显示输入每一份之间的间隔(可以没有)。
实现
组件
用两个组件 col.vue 以及 row.col 表示列以及行
col.vue
用户再输入标签时带上数据 span 以及 offset 代表份数及左边间隔,使用 props 传入,间隔更具传入的数据用 scss 进行更改样式
1 | $class-prefix: span-; |
本来样式最开始的时候我是写在 template 上的,但是一旦数据增加上去的话可读性就送到了影响,就放到 script 中,由于 span 及 offset 是在组件中是会改变的于是使用计算属性,同时我使用了 ES6 结构赋值。
row.vue
行组件代码是比列组件是要少上不少的但是有一个难点,所以理解上是比列组件要复杂点的。
之前有一个需求是可以输入每一块的间隔,由于这个间隔对于每一个行组件中的列组件是一样的,所以我们没必要写在列组件上而是写在行组件上就好了,就好像事件代理一样。但是我们应该如何通过行组件告知列组件他们的间隔(gutter)呢?
这就要用到生命周期 mounted ,mounted 是在 created 之后的,产生后挂载。所以我们可以在他们挂载后将 gutter 传给他们的子组件
1 | mounted(){ |