vue3.x components 如何定义_表单自定义组件接入指南

921e21a7b8ee7fc740e1314377e64f75.png

前言

el-form-renderer 的 type 有限, 默认只能渲染普通的表单项, 假如现在要渲染一个上传组件, type 就不够用了, 那怎么办呢? 这时候 component 选项就派上用场了

本文将介绍如何开发符合 el-form-renderer 接入标准的自定义组件, 实现对自定义组件的渲染

接入标准

自定义组件接入的关键是在组件内部实现 v-model

el-form-renderer 对 v-model 的要求是:

  • 有一个 props 为 value
  • 对外触发 input 事件

下面是一个简单的例子

<!-- 自定义组件 my-input -->
<input :value="value" @input="onInput">

<script>
export default {
  props: {
    value: String
  },
  methods: {
    onInput(val) {
      this.$emit('input', 'my-input: ' + val)
    }
  }
}
</script>

则可以用 component 属性让 el-form-renderer 渲染此自定义组件

<template>
  <el-form-renderer :content="content"/>
</template>

<script>
import MyInput from '@/components/my-input.vue'
export default {
  data() {
    return {
      content: [
        {
          component: MyInput,
          id: 'myInput',
          label: 'label'
        }
      ]
    }
  },
}
</script>

实际案例

目前团队对常见的表单扩展组件都按 el-form-renderer 的标准实现了 v-model, 因此都可以不写 template, 由 el-form-renderer 实现数据驱动渲染

  • 上传组件 https://github.com/FEMessage/upload-to-ali
  • 富文本编辑器 https://github.com/FEMessage/v-editor
  • 省市区选择器 https://github.com/FEMessage/el-select-area
  • 范围输入框 https://github.com/FEMessage/el-number-range
  • 版本号输入框 https://github.com/FEMessage/el-semver-input

拓展阅读

  • v-model基础
  • 在组件上使用v-model
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值