目录
  • 起因
  • 解决方案
    • 在Vue2中
    • 在Vue3中
  • 总结

    起因

    首先,Element 官网的表格样式默认是这样的:

    Element UI/Plus中全局修改el-table默认样式的解决方案

    • el-table 无边框
    • el-table-column 行信息居左展示
    • el-table-column 当内容过长也没有溢出和显示tooltip的效果

    如果我们需要改成这样:

    Element UI/Plus中全局修改el-table默认样式的解决方案

    那我们需要给el-tableel-table-column添加相应的props,即:

    <el-table border>
      <el-table-column prop="xxx" label="xxx" align="center" show-overflow-tooltip />
      <el-table-column prop="xxx" label="xxx" align="center" show-overflow-tooltip />
      <el-table-column prop="xxx" label="xxx" align="center" show-overflow-tooltip />
      <!-- ... -->
    </el-table>

    这样,每个使用el-tableel-table-column的地方,都需要添加相应的props,这不仅增加我们的工作量,也让代码显得多余。

    我们能否让每个组件的代码都简化成以下这样,并且仍然保留边框、居中和超出文本溢出的效果呢,即:

    <el-table>
      <el-table-column prop="xxx" label="xxx" />
      <el-table-column prop="xxx" label="xxx" />
      <el-table-column prop="xxx" label="xxx" />
      <!-- ... -->
    </el-table>

    答案是可以的!

    解决方案

    在Vue2中

    import Vue from 'vue'
    import { Table, TableColumn } from 'element-ui'
    
    // 获取组件的props
    const TableProps = Table.props
    const TableColumnProps = TableColumn.props
    
    // 修改默认props
    // 全局el-table设置
    TableProps.border.default = true // 边框
    // 全局el-table-column设置
    TableColumnProps.align.default = 'center' // 居中
    TableColumnProps.showOverflowTooltip.default = true // 文本溢出
    
    Vue.use(Table)
    Vue.use(TableColumn)

    在Vue3中

    import { createApp } from 'vue'
    import App from './App.vue'
    import ElementPlus from 'element-plus'
    import { ElTable, ElTableColumn } from 'element-plus'
    
    // 获取组件的props
    const TableProps = Table.props
    const TableColumnProps = TableColumn.props
    
    // 修改默认props
    // 全局el-table设置
    TableProps.border = { type: Boolean, default: true } // 边框线
    // 全局el-table-column设置
    TableColumnProps.align = { type: String, default: 'center' } // 居中
    TableColumnProps.showOverflowTooltip = { type: Boolean, default: true } // 文本溢出
    
    const app = createApp(App)
    app.use(ElementPlus)

    这样只需要在全局设置一次,就可以在每个组件中生效,这样就可以少写很多代码了,同理我们也可以在全局设置其他组件的默认的props

    总结

    声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。