react+antd+ts优雅处理复杂表单
【react+antd+ts优雅处理复杂表单】废话不多说,先上代码
https://codesandbox.io/s/wild...
lowcode方式实现表单配置化(不知道我对lowcode的理解是否正确,我认为lowcode就是分治,隔离,解藕。让逻辑变得可替换,对组件进行约束,组合。对于组合是通过配置方式还是ui交互方式就无所谓)
我实现这个的核心思想就是,传入表单配置数组,配置项包括组件,组件参数,字段名,依赖项,远程获取数据的方法。
在form-creator.tsx中使用antd的Form组件作为容器,内部遍历配置项数组。渲染试图,将配置的组件参数通过解构的方式赋值。在这里对onValuesChange事件做了一次处理,因为需要记录最新的表单数据。
shouldAppear会接受当前最新的数据,来计算出是否要现实这个元素。
form-creator-item.tsx主要是对每一项做远程数据的处理还有缓存。resetFromServer包括两个属性
deps:string[]
loadFn: (value: any) => Promise
deps目的是能够从当前formData中pick出依赖的数据,传递给loadFn,并且根据每次的数据不同,都回以当前的值当作key,存起来。这样在用户修改选项的时候,如果选中了曾经一样的值,就不会再次发请求啦。
推荐阅读
- Java|Java OpenCV图像处理之SIFT角点检测详解
- 事件处理程序
- 爬虫数据处理HTML转义字符
- Android|Android BLE蓝牙连接异常处理
- 雅姿雅态知识2【怎么坐?才能坐如芍药|雅姿雅态知识2【怎么坐?才能坐如芍药,尽显女人优雅】
- 【冷处理】亲子时间管理检视Day63
- C#中类的异常处理详解
- JAVA图像处理系列(四)——噪声
- Promise详解
- Python|Python 基于datetime库的日期时间数据处理