React中关于antd的RangePicker自定义清空

本文介绍如何通过Reacthooks实现RangePicker组件的自定义清空功能,包括处理onChange事件、value类型以及判断是否为空值的操作。

虽然这边写的是RangePicker,但是其他日期等同理

官方文档没有写出自定义清空时间的函数,但是我们可以通过hooks对onChange和value来进行对这个组件的值进行控制

需要注意的点是关于范围的时间组件中

value的类型为   value={【moment(时间戳),moment(时间戳)】}

并且在onChange进行对value的赋值的同时,需要通过onchange获取的参数 是否为null,来判断是否是点击清空按钮而执行的函数

在清空值的时候需要把value设置成为【undefind,undefind】,并且通过判断设置value是否为undefind还是时间戳组件,如果没有判断,就算你清空了,moment(undefind)为当前时间,这种情况下清空之后就会变成当前时间而不是空值

👇上代码

           //setSelectedKeys为hooks           
              <RangePicker
              size={'small'}
              format="YYYY-MM-DD"
              value={
                selectedKeys[0] ? [moment(selectedKeys[0]), moment(selectedKeys[1])] : selectedKeys
              }
              // key={[moment(selectedKeys[0]), moment(selectedKeys[1])]}
              onChange={(e, x) => {
                if (e === null) {
                  setSelectedKeys([undefined, undefined]);
                } else {
                  setSelectedKeys([moment(e?.[0]).valueOf(), moment(e?.[1]).valueOf()]);
                }
              }}
            />
            <Button
              onClick={() => {
                setSelectedKeys([undefined, undefined]);
              }}
            >
              重置
            </Button>

React 中使用 Ant Design 的 `RangePicker` 组件设置默认日期,可以通过设置 `value` 或 `initialValues`(当使用 `Form` 组件时)来实现。具体方法如下: ### 使用 `value` 设置默认日期 如果未使用 `Form` 组件,可以直接通过 `value` 属性设置默认日期范围。需要使用 `moment` 或 `dayjs` 来生成对应的日期对象。 ```jsx import React from 'react'; import { DatePicker } from 'antd'; import dayjs from 'dayjs'; const { RangePicker } = DatePicker; const defaultDates = [dayjs('2023-10-01'), dayjs('2023-10-07')]; const CustomRangePicker = () => { return ( <RangePicker value={defaultDates} /> ); }; export default CustomRangePicker; ``` ### 使用 `Form` 设置默认日期 如果在 `Form` 表单中使用 `RangePicker`,可以通过 `form` 对象设置初始值。可以使用 `useEffect` 或直接在 `initialValues` 中定义默认值。 ```jsx import React, { useEffect } from 'react'; import { Form, DatePicker } from 'antd'; import dayjs from 'dayjs'; const { RangePicker } = DatePicker; const RangePickerForm = () => { const [form] = Form.useForm(); useEffect(() => { const initialValues = { dateRange: [dayjs('2023-10-01'), dayjs('2023-10-07')], }; form.setFieldsValue(initialValues); }, [form]); return ( <Form form={form} layout="vertical"> <Form.Item label="日期范围" name="dateRange"> <RangePicker /> </Form.Item> </Form> ); }; export default RangePickerForm; ``` ### 设置默认时间 如果需要设置默认时间为 `00:00:00` 和 `23:59:59`,可以通过 `showTime` 属性并设置 `defaultValue` 实现。 ```jsx import React from 'react'; import { DatePicker } from 'antd'; import dayjs from 'dayjs'; const { RangePicker } = DatePicker; const CustomRangePickerWithTime = () => { const showTimeDefaultValue = [dayjs('00:00:00', 'HH:mm:ss'), dayjs('23:59:59', 'HH:mm:ss')]; return ( <RangePicker showTime={{ hideDisabledOptions: true, defaultValue: showTimeDefaultValue, }} format="YYYY-MM-DD HH:mm:ss" /> ); }; export default CustomRangePickerWithTime; ``` 通过上述方式,可以灵活地设置 Ant Design 的 `RangePicker` 默认日期,并根据需求选择是否包含时间部分。上述方法在实际开发中广泛应用,可以有效提升用户体验[^1]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值