antd的组件Form自定义提交的数据格式

本文介绍如何使用Ant Design Form组件时,将select多选框的值转换为逗号分隔字符串,同时switch的值转换为'open'或'close'。通过自定义getValueFromEvent和getValueProps方法实现数据格式转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们做antd form表单提交的时候,像下面这个dome。

没做数据处理前,打印出来的数据如下:

 select框多选模式下,提交默认是数组格式。

switch开关表单提交时,默认是布尔值true、false。

现在要求改成(如下图打印):

1、test字段是用逗号隔开的字符串

2、state字段为true时传"open",为false时传"close"

实现代码如下:

1、valuePropName:为Form.Item包含的子节点的属性,如Switch 的是 'checked'、input的的属性是value、table的属性是dataSource等 

2、getValueFromEvent:在这个方法里将event的值转换成我们想要的数据格式。

3、getValueProps:把处理后元素的值转换成没处理前的数据格式

import { Button, Form, Select, Switch } from 'antd';
import React from 'react';

const App: React.FC = () => {
  const onFinish = (values: any) => {
    console.log('转换后的数据格式:');
    console.log(values);
  };


  /**
   * Form.Item 数组<=>字符串转化
   */
  const ArrayToString = {
    valuePropName: 'value',
    getValueProps: (val: string) => {
      return { value: val ? val.split(',') : [] }
    },
    getValueFromEvent: (e: any) => (e ? e.join(',') : '')
  };

  return (
    <Form
      name="basic"
      labelCol={{ span: 8 }}
      wrapperCol={{ span: 16 }}
      onFinish={onFinish}
      autoComplete="off"
    >

      <Form.Item label="平台" name="test" {...ArrayToString}>
        <Select
          style={{ width: '180px' }}
          mode="multiple"
        >
          <Select.Option value={'1'}>安卓</Select.Option>
          <Select.Option value={'2'}>ios</Select.Option>
          <Select.Option value={'3'}>小程序</Select.Option>
        </Select>
      </Form.Item>



      <Form.Item
        label="开关"
        name="state"
        valuePropName="checked"
        initialValue="open"
        getValueProps={value => ({ checked: value === 'open' ? true : false })}
        getValueFromEvent={value => {
          return value ? 'open' : 'close';
        }}>
        <Switch />
      </Form.Item>


      <Form.Item wrapperCol={{ offset: 8, span: 16 }}>
        <Button type="primary" htmlType="submit">
          Submit
        </Button>
      </Form.Item>
    </Form>
  );
};

export default App;

最后就能得到我们想要的数据格式了。

其他相关:

antd4中form表单shouldUpdate的用法

antd的组件Form自定义提交的数据格式

喜欢的可点赞、收藏~

在Ant Design (antd) 的表单组件中,自定义组建通常用于创建一些特定于业务需求的非标准输入控件。如果你想要编辑回显值,你可以按照以下步骤操作: 1. **创建自定义组件**: 首先,你需要创建一个React组件,这个组件应该接收`value`和`onChange`等基本属性,用来设置初始显示内容和处理用户输入的变化。 ```jsx import React from 'react'; import { Input } from 'antd'; const CustomInput = ({ value, onChange }) => { return ( <div> {/* 使用antd的Input,并传递你的值和事件处理器 */} <Input value={value} onChange={onChange} /> </div> ); }; export default CustomInput; ``` 2. **在Form组件中使用自定义组件**: 然后,在`Form`组件中,你可以像使用内置的`Input`一样,引用你的`CustomInput`组件,并在初始化时设置回显值。 ```jsx import { Form, Input } from 'antd'; import CustomInput from './CustomInput'; const MyForm = () => { const [form] = Form.useForm(); const initialValue = '你的回显值'; // 可能是一个字符串、对象或其他数据类型 form.setFieldsValue({ customField: initialValue, }); const onFinish = (values) => { console.log('表单提交', values); }; return ( <Form form={form} onFinish={onFinish}> <Form.Item label="自定义字段" name="customField"> <CustomInput /> </Form.Item> </Form> ); }; export default MyForm; ``` 当你打开表单时,你的自定义输入框会直接显示预设的回显值。如果用户修改了值,`onChange`事件会被触发,更新到表单状态。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

caicaicai404

对作者使用钞能力,欢迎点这里

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值