vue3 + typescript + antd-design-vue(3.x)Modal.form()

首先介绍一下ant-design-vue Modal

这里是官网 ant-design-vue
Moadl支持Modal.confirm

Modal.confirm({
        title: 'Do you Want to delete these items?',
        icon: createVNode(ExclamationCircleOutlined),
        content: createVNode('div', { style: 'color:red;' }, 'Some descriptions'),
        onOk() {
          console.log('OK');
        },
        onCancel() {
          console.log('Cancel');
        },
        class: 'test',
      });

这里可以看到content使用了createVNode函数,这里我们可以引入一个tsx组件作为node接入进来

注意:vue3中的tsx写法这里只介绍两种
一种是render函数形式,一种是setup

export default defineComponent({

  props: {
    msg: {
      type: String,
      default: ''
    }
  },

  render () {

    const testClick = () => {
      this.$emit('submit')
    }

    const confirm = () => {
      return (
        <button onClick={testClick}>hello</button>
      )
    }

    return confirm()
  }

render函数形式的组件可以通过this获取vue实例,进而进行操作(这里用到父子组件传值)

export default defineComponent({

  props: {
    msg: {
      type: String,
      default: ''
    }
  },
  setup(props, { emit }) {
    const testClick = () => {
      emit('test')
    }
    const comfirm = {
      render() {
        <button onClick={testClick}>hello</button>
      },
    };
    return {
      comfirm
    }
  }
})

这里是setup形式的tsx,这里官网也有介绍
vue3 jsx/tsx

接下来是在Modal.confirm()中的content使用该组件

import TestConfirm from './test';

const confirm = () => {
      Modal.confirm({
        title: 'Confirm',
        icon: createVNode(ExclamationCircleOutlined),
        content: createVNode(TestConfirm, {
          onSubmit() {
          }
        }),
        // content: () => h(TestConfirm, { msg: 'hello word' }),
        okText: '确认',
        cancelText: '取消',
      });
    };

’TestConfirm‘是tsx子组件,子组件的emit出来的方法在content中要以on开头写成驼峰。

以上就是vue3使用tsx在Modal.form({content})中结合的使用

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值