Skip to content

数据管理

API 提供了一系列数据管理功能,帮助开发者轻松地与外部数据源进行交互,管理表单中的外部数据,并确保表单组件能够根据这些数据进行动态更新。

数据结构

以下是 Api 数据管理相关的数据结构及简明解释:

ts
interface Api {
  // 发送远程请求,支持自定义的请求逻辑和处理方式
  fetch(opt: FetchOption): Promise<any>;
  // 设置外部数据,支持在表单中使用外部数据源
  setData(id: string, value?: any): void;
  // 获取外部数据,返回之前设置的数据对象
  getData(id: string, defaultValue?: any): any;
  // 刷新与外部数据相关的组件,确保数据变更后 UI 同步更新
  refreshData(id: string): void;
}

远程请求

fetch 方法用于发起远程请求,以获取外部数据或将数据发送到服务器。它与表单组件深度集成,可根据请求结果动态更新表单的选项或数据。

typescript
type fetch = (opt: FetchOption) => Promise<any>;
js
fApi.fetch({
    action: '/api/get-options',
    method: 'GET',
    to: 'props.options',
    onSuccess(data) {
        console.log('获取的数据:', data);
    },
    onError(error) {
        console.error('请求失败:', error);
    }
});

设置外部数据

setData 方法用于将外部数据挂载到表单中,使得这些数据可以被表单中的组件使用。这些数据可以是静态的,也可以是从外部数据源动态获取的。

typescript
type setData = (id: string, value?: any)=> void;
js
fApi.setData('categories', [
    { label: 'Electronics', value: 'electronics' },
    { label: 'Clothing', value: 'clothing' },
    { label: 'Home & Garden', value: 'home_garden' },
]);
console.log('外部数据已设置:', fApi.getData('categories'));

获取外部数据

getData 方法用于获取之前通过 setData 方法设置的外部数据。如果指定的数据未设置,方法将返回 defaultValue。

typescript
type getData = (id: string, defaultValue?: any) => any;
js
const categories = fApi.getData('categories', []);
console.log('获取的分类数据:', categories);

刷新外部数据相关组件

refreshData 方法用于手动刷新与指定外部数据相关的组件渲染。当外部数据发生变化时,可以调用该方法以确保表单组件正确反映最新的数据状态。

typescript
type refreshData = (id: string) => void;
js
fApi.setData('categories', [
  { label: 'Books', value: 'books' },
  { label: 'Music', value: 'music' },
]);
fApi.refreshData('categories');
console.log('与分类数据相关的组件已刷新');

示例

根据用户输入动态获取并设置城市数据

在一个地址表单中,用户选择省份后,系统自动从服务器获取该省份对应的城市列表,并动态更新表单中的城市选项。

js
fApi.fetch({
    action: '/api/get-cities',
    method: 'GET',
    data: { province: fApi.getValue('province') }
}).then((response) => {
    // 将获取到的城市数据设置到表单中
    fApi.setData('cities', response.data);
    // 刷新城市字段,确保 UI 显示最新的城市选项
    fApi.refreshData('cities');
}).catch((error) => {
    console.error('获取城市数据失败:', error);
});

根据外部数据初始化表单

在一个用户编辑表单中,需要从服务器获取用户的详细信息,并将这些数据预填充到表单中。

js
fApi.fetch({
    action: '/api/get-user-info',
    method: 'GET',
    data: { userId: fApi.getValue('user_id') }
}).then((response) => {
    // 设置用户信息到表单
    fApi.setData('userInfo', response.data);
    // 更新表单中的相关字段
    fApi.setValue({
        name: response.data.name,
        email: response.data.email,
        phone: response.data.phone
    });
    fApi.refreshData('userInfo'); // 确保表单同步更新
}).catch((error) => {
    console.error('获取用户信息失败:', error);
});

FormCreate 是一个开源项目,基于 MIT 许可证发布,欢迎个人和企业用户免费使用