vue3使用render对element-plus的table组件封装

需求:

自定义el-table的某些列

涉及知识点:

1.父组件传递给子组件render函数,自组件如何渲染出来

2.vue3中render函数使用第三方UI组件、传递属性、绑定事件

关于render函数的变更文档:

https://v3.cn.vuejs.org/guide/migration/render-function-api.html#_2-x-%E8%AF%AD%E6%B3%95-3

实现:

父组件:

{
    title: '操作',
    key: 'operation',
    render: (row:Object) => {
        return h('div', {}, [
            h(btn, {
              type: 'text',
              size: 'small',
              onClick(){
                getDetail(row)
              }
            }, '查看'),
            h(btn, {
              type: 'text',
              size: 'small',
              onClick(){
                getDetail(row)
              }
            }, '编辑')
        ]);
    } 
  }

 子组件(table组件)

<Expand :column="item" :row="scope.row" :render="item.render" :index="index" />

 

 expand.ts

import { h } from 'vue';
export default {
    props: {
        row: Object,
        render: Function,
        index: Number,
        column: {
            type: Object,
            default: null
        }
    },
    render: function () {
        return this.render(this.row)
    }
}

 

posted @ 2021-11-12 09:20  吃饭睡觉打痘痘  阅读(2032)  评论(0编辑  收藏  举报