1 | ---
|
2 | title: Form Render
|
3 | hero:
|
4 | title: FormRender
|
5 | desc: 通过 JSON Schema 生成标准 Form,常用于自定义搭建配置界面生成
|
6 | actions:
|
7 | - text: playground
|
8 | link: /playground
|
9 | - text: 开始使用
|
10 | link: /guide/getting-started
|
11 | features:
|
12 | - icon: https://gw.alipayobjects.com/zos/bmw-prod/881dc458-f20b-407b-947a-95104b5ec82b/k79dm8ih_w144_h144.png
|
13 | title: 开箱即用
|
14 | desc: 像写一个input一样写整个表单
|
15 | - icon: https://gw.alipayobjects.com/zos/bmw-prod/d60657df-0822-4631-9d7c-e7a869c2f21c/k79dmz3q_w126_h126.png
|
16 | title: 自由定制
|
17 | desc: 联动、自定义组件快速接入,满足定制化需求
|
18 | - icon: https://gw.alipayobjects.com/zos/bmw-prod/d1ee0c6f-5aed-4a45-a507-339a4bfe076c/k7bjsocq_w144_h144.png
|
19 | title: 海量示例
|
20 | desc: 新版文档 code Demo & playground 一应俱全
|
21 | footer: Open-source MIT Licensed | Copyright © 2020<br />Powered by [dumi](https://d.umijs.org)
|
22 | ---
|
23 |
|
24 | ## 安装
|
25 |
|
26 | ```shell
|
27 | yarn add form-render
|
28 | # 或者
|
29 | npm i form-render
|
30 | ```
|
31 |
|
32 | 同时安装依赖的组件库 (依赖哪个装哪个,天然支持 antd 和 fusion 两套。其他的组件库可通过 widgets 的方式传入,见[自定义组件](/guide/advanced/widget))
|
33 |
|
34 | ```shell
|
35 | # 例如
|
36 | yarn add antd
|
37 | # 或者
|
38 | yarn add @alifd/next
|
39 | ```
|
40 |
|
41 | 注:一般来说,想使用 form-render 的 antd 主题的项目,dependencies 里肯定装了 antd。这里强调一下这步,主要是针对想尝试写个 demo 玩玩的同学,记得要安装对应的 ui 组件库
|
42 |
|
43 | ## 使用
|
44 |
|
45 | ```jsx
|
46 | import React, { useState } from 'react';
|
47 | // 使用 Ant Design 风格
|
48 | import FormRender from 'form-render/lib/antd';
|
49 | // 使用 Fusion 风格
|
50 | // import FormRender from 'form-render/lib/fusion';
|
51 | // import '@alifd/next/dist/next.min.css';
|
52 |
|
53 | const schema = {
|
54 | type: 'object',
|
55 | properties: {
|
56 | string: {
|
57 | title: '字符串',
|
58 | type: 'string',
|
59 | },
|
60 | select: {
|
61 | title: '单选',
|
62 | type: 'number',
|
63 | enum: [1, 2, 3],
|
64 | enumNames: ['选项1', '选项2', '选项3'],
|
65 | },
|
66 | },
|
67 | };
|
68 |
|
69 | const Demo = () => {
|
70 | const [formData, setFormData] = useState({});
|
71 | const onSubmit = () => {
|
72 | alert(JSON.stringify(formData));
|
73 | };
|
74 | return (
|
75 | <div>
|
76 | <FormRender schema={schema} formData={formData} onChange={setFormData} />
|
77 | <button onClick={onSubmit}>提交</button>
|
78 | </div>
|
79 | );
|
80 | };
|
81 |
|
82 | export default Demo;
|
83 | ```
|
84 |
|
85 | 注:由于 fusion 的 css 无法按需引入,且在内部整个引入会造成样式覆盖,所以需要用户外部独立引入
|
86 |
|
87 | ## schema 可以不用手写哦!
|
88 |
|
89 | 使用 [表单设计器](https://x-render.gitee.io/schema-generator/),拖拖拽拽导出 schema,丢到代码里生成可用表单
|
90 |
|
91 | <img src="https://gw.alipayobjects.com/mdn/rms_e18934/afts/img/A*4QYNTbKU6xAAAAAAAAAAAABkARQnAQ?raw=true" width="750px"/>
|
92 |
|
93 | <img src="https://gw.alipayobjects.com/mdn/rms_e18934/afts/img/A*FfTuRYjRd1AAAAAAAAAAAABkARQnAQ?raw=true" alt="schema编辑器" width='750px' />
|
94 |
|
95 | 还可在 vscode 商店搜索 “formrender” 下载配套 [可视化插件](https://marketplace.visualstudio.com/items?itemName=F-loat.vscode-plugin-fr-schema)
|
96 |
|
97 | <img src="https://img.alicdn.com/tfs/TB1b53cmGNj0u4jSZFyXXXgMVXa-2740-1748.gif" alt="schema编辑器" width='750px' />
|
98 |
|
99 | ## 理念
|
100 |
|
101 | [详见 form-render 的理念](/guide/design)
|
102 |
|
103 | ## 贡献
|
104 |
|
105 | 想贡献代码、解 BUG 或者提高文档可读性?非常欢迎一起参与进来,在提交 MR 前阅读一下 [Contributing Guide](https://github.com/alibaba/form-render/blob/master/CONTRIBUTING.md)
|
106 |
|
107 | 感谢给 FormRender 贡献代码的你们,以及 JetBrains 提供 Free 使用!
|
108 |
|
109 | <a href="https://github.com/alibaba/form-render/graphs/contributors"><img src="https://opencollective.com/form-render/contributors.svg?width=890&button=false"/></a><a href="https://www.jetbrains.com/?from=form-render"><img src="https://img.alicdn.com/tfs/TB1gPDDJKL2gK0jSZFmXXc7iXXa-2000-2168.png" width="100px" /></a>
|
110 |
|
111 | ## 反馈与共建
|
112 |
|
113 | 请访问 [github](https://github.com/alibaba/form-render) 或加入讨论群:
|
114 |
|
115 | <img src="https://img.alicdn.com/tfs/TB1CprJg5pE_u4jSZKbXXbCUVXa-894-1087.jpg" width="240px" />
|
116 | -->
|