formily-request-monorepo
Version:
A flexible, lightweight, non-intrusive plugin for extending formily schema request data.
75 lines (51 loc) • 2.51 kB
Markdown
---
nav: { title: '指南', order: 1 }
order: 1
title: 简介
group: { title: '开始', order: 1 }
toc: content
---
# 什么是 Formily Request
Formily Request 是一个专注于配置化场景的数据请求解决方案。它通过扩展 JSON Schema 配置,以无侵入的方式实现接口请求和数据转换,为表单组件的动态数据获取提供了一种优雅且高效的方案。
## 为什么需要 Formily Request
在使用 [Formily](https://formilyjs.org/zh-CN) 构建表单时,我们经常需要为 Select、Radio、Cascader 等组件实现动态数据展示。目前主要有两种实现方式:
1. 按照[官方建议](https://formilyjs.org/zh-CN/guide/advanced/async),通过自定义组件实现
2. 参考 [Ant Design](https://antd.formilyjs.org/zh-CN/components/select#json-schema-%E5%BC%82%E6%AD%A5%E8%81%94%E5%8A%A8%E6%95%B0%E6%8D%AE%E6%BA%90%E6%A1%88%E4%BE%8B) 的方案,使用 `useAsyncDataSource` 函数配合 `scope` 实现
这些方案在非配置化场景中运作良好,但在配置化场景下存在明显局限:
- 自定义组件方案需要进行额外的组件开发
- `useAsyncDataSource` 方案需要在系统中预先定义数据源函数
Formily Request 正是为解决这些问题而生,它让你可以直接在 JSON Schema 中配置数据请求,无需额外的开发工作。
以下是 `官方示例` vs `formily-request` 的效果对比:
```jsx
/**
* inline: true
*/
import React from 'react';
import { Image } from 'antd';
import img from '../../assets/diff-new.png';
export default () => (
<div style={{ margin: '10px 0' }}>
<Image src={img} />
</div>
);
```
## 核心特性
### 组件无关
- 无需修改现有组件
- 无需编写额外的自定义组件
- 可以专注于数据配置,而不是组件开发
### 框架无关
- 支持 React 和 Vue 等主流框架
- 统一的配置方式,跨框架复用
- 降低框架迁移成本
### 组件库无关
- 支持 Ant Design、Element Plus 等各类组件库
- 统一的数据获取方式
- 提供一致的开发体验
### 高扩展性
- 适用于所有需要动态数据的场景
- 支持 Select、Radio、Checkbox、Cascader、Table 等组件
- 可自定义数据转换规则
- 灵活的请求配置和响应处理
## 问题反馈
如果在使用过程中发现任何问题、或者有改善建议,欢迎在 [GitHub Issues](https://github.com/007sair/formily-request/issues) 进行反馈。我们将认真对待每一个反馈,持续改进产品质量。