基于Ant Design 和jQuery UI 的表单设计器 GitHub 地址

概念

  • Comonent 组件
  • Layout 布局,一种特殊的Component
  • Component Editor 组件属性编辑器
  • Component Factory 组件工厂,创建Component 和 Component Editor

扩展组件

创建一个组件

组件的定义是通过<b>this.props.definition</b>来传递的。definition的格式如下:

{type: 'Checkbox', // 必须存在title: '多选框',  // 必须存在props:{'columnNum':2},children:[// 只有在Layout 中出现该属性componentDefinition,...]
}

在this.props 中还提供了<b>renderCounter</b>属性,每次组件的刷新该属性值会自增。definition的结构可能是深层次的,然而在Ant Design提供的React 组件中的<a href="https://reactjs.org/docs/react-component.html#shouldcomponentupdate" target="_blank" rel="noopener noreferrer">shouldComponentUpdate(nextProps,nextState)</a>方法的实现是对象的浅层比较,在某些情况下Component Editor对组件属性的改变不会导致组件的刷新。可以通过renderCounter来解决组件不刷新的问题。

/*** 组件*/
@ComponentWrapper
class CheckboxComponent extends Component{render(){const { definition :{props}, renderCounter} = this.props;const defaultValue = props.options.filter(item=>{return item.checked;}).map(item=>{return item.value;});return (<CheckboxGroup options={props.options} value={defaultValue} renderCounter={renderCounter} />)}
}

/*** 组件编辑器*/
@ComponentEditor
class InputComponentEditor extends PureComponent{/*** 当编辑器改变时,此方法被调用*/onChange(_, allValues){if(!isNull(allValues.minLength, allValues.maxLength) && allValues.minLength > allValues.maxLength){message.warn(`最小长度${allValues.minLength}应该小于最大长度${allValues.maxLength}`);return false;// 阻止组件的刷新}const { definition:{props}, definition } = this.props;definition.name = getErasure(allValues, 'name');definition.title = getErasure(allValues, 'title');Object.assign(props, allValues);props.minLength = guaranteeNumber(props.minLength, 0, Number.MAX_VALUE);props.maxLength = guaranteeNumber(props.maxLength, 0, Number.MAX_VALUE);return true;}render(){return (<PropsEditor {...this.props} lengthLimit placeholder/>);}
}
/*** 组件工厂*/
@FactoryRegister(InputComponent,InputComponentEditor)
class InputFactory {type="Input"      // 必须存在title="单行输入框"    // 必须存在/*** 初始化一个组件定义* @returns {{type: string, title: string}}*/createComponentDefinition(){return {type: this.type,title: this.title,props:{placeholder: '请输入'},}}
}export default InputFactory;

在compoents/index.js 或 layout/index.js 引入自己组件

转载于:https://my.oschina.net/noCry/blog/3044071

基于Ant Design和jQuery UI的表单设计器相关推荐

  1. activiti表单设计器_基于Vue,ElementUI开发的一款表单设计器

    介绍 基于Vue,ElementUI开发的一款表单设计器,提高表单开发效率的利器,让开发者从枯燥的表单代码编写中解放出来 工具地址: http://tools.xiaoyaoji.cn/form Gi ...

  2. 基于Vue,ElementUI开发的一款表单设计器

    介绍 基于Vue,ElementUI开发的一款表单设计器,提高表单开发效率的利器,让开发者从枯燥的表单代码编写中解放出来 工具地址:http://form.making.link GitHub地址:h ...

  3. FormMaking表单设计器的使用

    在开发过程中有一个可以让客户自己来设计表单的需求,看了多个动态表单生成的,最后选择了FormMaking,主要是这个基于vue和elmenet-ui的一款表单设计器,跟我们的项目更贴合. FormMa ...

  4. 基于springboot+element ui+vue的java快速开发平台,集成html5工作流设计器,flowable, element ui 表单设计器

    前后端分离.maven多模块开发,方便多人协同开发 后端选型:springboot2 + mybatis + shiro + jwt token + flowable 前端选型:vue + eleme ...

  5. html5拖拽表单设计器,require+jquery+backbone实现拖拽式报表设计器-拖拽式表单设计器...

    HTML我帮您-拖拽式报表设计器-拖拽式表单设计器是一个可视化设计器,基于require+jquery+backbone+underscore+bootstrap实现的表单设计器.思想来源于 Layo ...

  6. 基于 Formily 的表单设计器实现原理分析 ​

    编者寄语:本期为大家带来基于 Formily 的拖拽式表单设计器玩法,探索可视化时代表单设计器的可能. 背景 在控制台类 web 应用中,表单是最常见的交互形式.用户在表单中填写信息,点击提交就能完成 ...

  7. 基于 Formily 的表单设计器实现原理分析

    作者:段国伟.汪曦 背景 在控制台类 web 应用中,表单是最常见的交互形式.用户在表单中填写信息,点击提交就能完成对数据创建或者修改操作. 最开始前端开发人员根据业务模型和具体需求,通过**逐一** ...

  8. 开源推荐:国内3大主流前端UI表单设计器,千万不要让领导知道

    互联网应用架构:专注编程教学,架构,JAVA,Python,微服务,机器学习等领域,欢迎关注,一起学习. 偷得浮生半日闲,自古人生何其乐.开始之前告诉一下大家,距离国庆8天假只剩4天了,先乐呵乐呵. ...

  9. 基于VUE的ElementUi可视化表单设计器布局器

    码农苦码农懂的个人空间 工作日志 正文 基于VUE的ElementUi可视化表单设计器布局器 顶 原 码农苦码农懂 发布于 09/11 15:35 字数 1187 阅读 41 收藏 0 点赞 1 评论 ...

最新文章

  1. LAMP麻辣网站的搭建
  2. Excel 操作收藏
  3. 2005/7/15[随便写写]
  4. python输入input数组_python怎么输入数组
  5. 10张架构图详解数据中台,附全套数据中台PPT
  6. Windows Server 2012 GUI与Core的切换
  7. Java去除使用富文本编辑器时自动生成的标签
  8. 给快播指一条生路:转型会员付费吧
  9. 【微服务架构】让我们谈谈“拥有”他们的数据的微服务
  10. 武汉纺织大学计算机科学校区在哪,武汉纺织大学阳光校区在哪 环境好不好
  11. 7月1日起交强险费率只与交通事故挂钩浮动
  12. Windows编程 Windows程序的生与死(上)
  13. SQL 多表联合查询
  14. 自制英语翻译(调用有道翻译接口)
  15. Android官方文档翻译-Broadcasts
  16. memory prefix out omni,over,out,od,octa ~O
  17. 嵌入式以太网第二部分——ENC28J60网卡驱动
  18. js弹出新页面并传值
  19. 一部一台阶,直达LTE之巅——《学好LTE》丛书简介
  20. html js3d魔方,使用CSS3一个3D魔方详解~

热门文章

  1. 上海大学计算机专业与通信哪个好,选不选上海大学,上大计算机大四提供点信息...
  2. Linux——终端和shell
  3. scala详细笔记(七)scala集合练习题 [函数练习题][scala案例][scala练习]
  4. SQL中EXTRACT() 函数
  5. idea中jar包关联源码
  6. Python3 Requests+BS4网络爬虫:最详细零基础的获取百度快照链接爬虫教程(思路篇)
  7. 主成分分析在SPSS中的操作应用
  8. PHP中in_array 效率及其优化
  9. 初入职场|入门互联网产品经理
  10. 听哈佛商学院教授讲:如何建立信任