Vue3-JSX使用汇总

1、JSX绑定自定义事件

基本格式:on + xxxEvent 。如下所示模板绑定onColumnVisibleChange,在<operation-dialog/>内通过this.$emit('columnVisibleChange')进行回调触发

    render() {
        // 获取默认插槽的VNode列表
        let vNodes = this.$slots.default()
        return (
            <div>
                <el-table ref="table" {...this.$attrs}>
                    {vNodes}
                </el-table>
                <operation-dialog v-model:dialogVisible={this.dialogVisible} onColumnVisibleChange={ this.columnVisibleChange } />
            </div>
        )
    },

2、JSX下使用Slot

<el-dropdown>的下拉内容需要通过slot #default来填充,即:

<template #dropdown>
      <el-dropdown-menu>
        <el-dropdown-item>Action 1</el-dropdown-item>
      </el-dropdown-menu>
</template>

JSX填充此模板可定义slot对象,key值为Slot name,值即为模板内容。定义完毕后,可通过v-slots={slot}进行slot传递,如此,即可实现SlotJsx下的处理

    render(h) {
        const slot = {
            dropdown: () =>
                <el-dropdown-menu>
                    {this.dropDownButtonGroup.map((item) => {
                        return <li class='button-group-dropdown'>{item}</li>
                    })}
                </el-dropdown-menu>
        }

        return (
            <div class='table-button-group'>
                {this.normalButtonGroup}
                {this.dropDownButtonGroup.length > 0 ? (
                    <el-dropdown size='small' trigger='click' class='table-dropdown' v-slots={slot}>
                        <span class='el-dropdown-link'>
                            {this.text}<el-icon class='el-icon--right'><arrow-down /></el-icon>
                        </span>
                    </el-dropdown>
                ) : null}
            </div>
        )
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值