新接触 vue,关于 Vue 组件设计的一些疑问

2019-04-10 11:29:12 +08:00
 sundev

打个比方,我目前在设计一个table组件,现在要向里面传递column信息, 目前看到两种方案: 第一种是vue element方式,通过el-table-column标签向table组件传递信息,如下:

<el-table
    :data="tableData"
    style="width: 100%"
    max-height="250">
    <el-table-column
      fixed
      prop="date"
      label="日期"
      width="150">
    </el-table-column>
    <el-table-column
      prop="name"
      label="姓名"
      width="120">
    </el-table-column>
  </el-table>

第二种是vue-easytable方式,通过 props 的方式传递列数据,如下:

<template>
   <v-table :columns="columns"></v-table>
</template>

<script>
    export default{
        data(){
            return {
                multipleSort: false,
                tableData: [ ... ],
                columns: [
                    {field: 'email', width: 230, columnAlign: 'center'},
                    {field: 'address', width: 330, columnAlign: 'left'}
                ],
                titleRows: [
                    {fields: ['email'], title: '111', titleAlign: 'center',titleCellClassName:'title-cell-class-name-test2'},
                    {fields: ['address'], title: '333', titleAlign: 'center',titleCellClassName:'title-cell-class-name-test2'}]
                ]
            }
        }
    }
</script>

这两种设计方式有啥优劣?

2148 次点击
所在节点    Vue.js
3 条回复
66beta
2019-04-10 11:42:00 +08:00
从实际业务出发吧,第一种是 slot 方式,比较灵活,也就是说它支持多种表格展示方式

第二种就比较固定了,只传对应格式的数据进去
sundev
2019-04-10 12:40:16 +08:00
@66beta 之前写 react,所以比较喜欢第一种方式,但是如果用这种,那么需要在组件内部对 slot 进行解析,感觉比较麻烦!
jydeng
2019-04-10 13:07:33 +08:00
可以两种结合

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/553658

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX