UNPKG

4.18 kBMarkdownView Raw
1---
2title: Form Render
3hero:
4 title: FormRender
5 desc: 通过 JSON Schema 生成标准 Form,常用于自定义搭建配置界面生成
6 actions:
7 - text: playground
8 link: /playground
9 - text: 开始使用
10 link: /guide/getting-started
11features:
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 一应俱全
21footer: Open-source MIT Licensed | Copyright © 2020<br />Powered by [dumi](https://d.umijs.org)
22---
23
24## 安装
25
26```shell
27yarn add form-render
28# 或者
29npm i form-render
30```
31
32同时安装依赖的组件库 (依赖哪个装哪个,天然支持 antd 和 fusion 两套。其他的组件库可通过 widgets 的方式传入,见[自定义组件](/guide/advanced/widget))
33
34```shell
35# 例如
36yarn add antd
37# 或者
38yarn add @alifd/next
39```
40
41注:一般来说,想使用 form-render 的 antd 主题的项目,dependencies 里肯定装了 antd。这里强调一下这步,主要是针对想尝试写个 demo 玩玩的同学,记得要安装对应的 ui 组件库
42
43## 使用
44
45```jsx
46import React, { useState } from 'react';
47// 使用 Ant Design 风格
48import 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
53const 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
69const 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
82export 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<!-- <code src='./playground/index.jsx' className='hidden' /> -->