# designform **Repository Path**: Jing_jun_yang/designform ## Basic Information - **Project Name**: designform - **Description**: 表单引擎demo探索,用于深入研究表单引擎实现及原理,探索表单引擎整体架构设计,指导前后端开发人员落地实现。 - **Primary Language**: JavaScript - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2024-07-01 - **Last Updated**: 2024-07-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # DesignForm 表单设计器使用文档 ### 背景介绍 * 释义: 本表单引擎仅为demo,用于个人研究和技术预演论证可行性探讨。 * [DesignForm 背景介绍](表单引擎介绍.md) * [DesignForm 核心设计思路](核心设计思路.md) ### 快速使用 ```jsx ``` | 属性 | 注释 | 默认值 | 示例值 | 必填 | | ----------------- | ------------------------------------------------ | -------------- | ---------------------------------------------------------------- | ------ | | formkey | 表单key,表单key不能重复 | '' | 表单1 | 是 | | formtype | 表单类型:0=主表单,1=扩展表单,2=子表单,表单名称 | 1 | 0 | 否 | | formname | 表单名称 | '' | | 否 | | layout | 默认布局 | 'horizontal' | | 否 | | initvalue | 默认初始值 | null | [{key: '文本控件1',title:'',value:'1',type:'text'}] | 否 | | defaulttoolbar | 默认工具栏控件,默认加载全部控件 | null | [[{'title': '基础控件', control: ['Text', 'Blank', 'Label']}] | 否 | | defaultpackages | 默认编辑器引用的包,请输入需要引用的类应用即可 | null | {useContext,useRef,Input,Button} | 否 | | 其他属性 | 额外属性等同antd.Form表单属性 | | | 否 | ### 表单控件硬编码方式 硬编码方式使用表单控件示例: ```jsx //注意: 硬编码控件必须在DesignForm内部 { setInfo(event.target.value); }, }}/> ``` | 属性 | 注释 | 默认值 | 示例值 | 必填 | | ------------ | ------------------------------------------------------------------------------------------------ | -------- | ------------------------------------------------------ | ------ | | designkey | 表单设计控件key,当前表单内唯一,用于渲染和识别 | null | | 是 | | designdata | 表单设计控件data属性,用于定义控件属性渲染 | null | designdata={{ type: 'Text', title: '', value:info }} | 是 | | extprops | 表单设计控件extProps属性,用于定义控件事件渲染,如onChange/onClick等,请关注antd相应类型控件类型 | null | extprops={{ onChange:(e)=>{} }} | 否 | | 其他属性 | 额外属性等同antd.Form.Item表单属性 | null | | 否 | * [DesignControl designdata 说明文档](designControl.md) ### 表单方法 | 方法 | 注释 | 示例 | | ---------------------- | -------------------------------------------------------- | ----------------------------------- | | `getDesignModelJson` | 获取前端表单设计json,一般不会用到 | | | `isEditState` | 获取表单设计状态 | true/false | | `setIsEditState` | 设置表单设计状态 | xx.current.setIsEditState(true) | | `refreash` | 刷新表单 | xx.current.refreash() | | `controls` | 获取表单控件集合,可访问任意控件信息,谨慎操作控件信息 | xx.current.controls | | `useformData` | 获取表单基本信息 | xx.current.useformData | | `getJsonValue` | 获取表单内容数据 | xx.current.getJsonValue() | | `setJsonValue` | 设置表单内容数据 | xx.current.setJsonValue(datajson) | ```jsx const form = useRef(null);