当前位置: 首页 > article >正文

antd,Form,范围选择

标题antd,Form,范围选择

import { Form, InputNumber } from 'antd';

 const [form] = Form.useForm();
 const onFinish: any = (values: any) => {
    const [startAmount, endAmount] = values.amountRange || [];
    console.log('Success:' startAmount, endAmount);
};

//自定义组件
const InputNumberRange = ({ value = [], onChange }: any) => {
    const [min, max] = value || [];  //`value` 由 `Form` 控制

    return (
      <div style={{ display: 'flex', alignItems: 'center' }}>
        <InputNumber
          value={min}
          onChange={(val) => onChange([val, max])}   //onChange 触发 Form 更新数据
          placeholder="最小金额"
          style={{ flex: 1 }}
        />
        <span style={{ margin: '0 8px' }}>~</span>
        <InputNumber
          value={max}
          onChange={(val) => onChange([min, val])}   //onChange 触发 Form 更新数据
          placeholder="最大金额"
          style={{ flex: 1 }}
        />
      </div>
    );
  };


<Form
              form={form}
              style={{
                width: '100%',
                alignItems: 'flex-end',
                justifyContent: 'flex-start',
              }}
              layout={'inline'}
              name="basic"
              onFinish={onFinish}
              onFinishFailed={onFinishFailed}
              autoComplete="off"
            >
         <Form.Item
                layout={'vertical'}
                label="金额"
                name="amountRange"
              >
                <InputNumberRange />
          </Form.Item>
  </Form>

原理:
Ant Design 的 Form.Item 支持自定义组件,只要这个组件遵循 受控组件(Controlled Component) 规范,就能正确绑定 Form 的值。
InputNumberRange 符合 Form.Item 的受控组件要求:value 由 Form 传入,确保组件受控

<Form.Item label="订单金额" name="amountRange">
  <InputNumberRange />
</Form.Item>

Form.Item 自动传递 value 和 onChange 给 InputNumberRange,InputNumberRange 处理用户输入后,调用 onChange,Form 立刻更新 amountRange 的值
等效于

<Form.Item label="订单金额" name="amountRange">
  {({ value, onChange }) => (
    <InputNumberRange value={value} onChange={onChange} />
  )}
</Form.Item>

在这里插入图片描述


http://www.kler.cn/a/570913.html

相关文章:

  • 代码随想录算法训练营第三十一天 | 56. 合并区间 738.单调递增的数字
  • 二、QT和驱动模块实现智能家居-----3、安装并配置QT
  • AcWing 6138 奶牛体检
  • 长时间目标跟踪算法(3)-GlobalTrack:A Simple and Strong Baseline for Long-termTracking
  • SOUI基于Zint生成EAN码
  • 详解DeepSeek模型底层原理及和ChatGPT区别点
  • VMware虚拟机IP配置
  • 2.css简介
  • VUE表单项无法重置的问题
  • ### **Android核心系统服务深度解析(AMS/ATMS/WMS/DMS)**
  • 注意力机制详解笔记 Attention is all I donot understand!
  • 机试题——通讯录合并
  • 基于值函数的强化学习算法之SARSA详解
  • 字节跳动发布 Trae AI IDE!支持 DeepSeek R1 V3,AI 编程新时代来了!
  • spark 常见操作命令
  • 【三.大模型实战应用篇】【7.自然语言转SQL升级版:更智能的查询生成】
  • 蓝队学习一
  • leetcode 138. 随机链表的复制
  • 基于Servlet + JSP 的药店管理系统
  • Elasticsearch简单学习