相关文章推荐
淡定的跑步机  ·  全国高低风险地区名单(截至2022年11月1 ...·  6 月前    · 
刚毅的海龟  ·  2023年中国工控企业竞争力排行榜TOP10 ...·  9 月前    · 
星星上的红烧肉  ·  2024最新最全【AIGC】学习零基础入门到 ...·  1 年前    · 
小眼睛的黑框眼镜  ·  用 javascript 判断 IE ...·  2 年前    · 
淡定的匕首  ·  电影《坎大哈陷落》赋予了动作爽片新的意义 - 知乎·  2 年前    · 
Code  ›  Ant Design的DatePicker日期组件不可选日期实现,让New Bing优化代码太棒了开发者社区
前端组件 begin datepicker
https://cloud.tencent.com/developer/article/2317809
逆袭的小笼包
1 年前
德顺

Ant Design的DatePicker日期组件不可选日期实现,让New Bing优化代码太棒了

前往小程序,Get 更优 阅读体验!
立即前往
腾讯云
开发者社区
文档 建议反馈 控制台
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
发布
首页
学习
活动
专区
工具
TVP 最新优惠活动
返回腾讯云官网
德顺
首页
学习
活动
专区
工具
TVP 最新优惠活动
返回腾讯云官网
社区首页 > 专栏 > Ant Design的DatePicker日期组件不可选日期实现,让New Bing优化代码太棒了

Ant Design的DatePicker日期组件不可选日期实现,让New Bing优化代码太棒了

作者头像
德顺
发布 于 2023-08-25 13:42:54
1.9K 0
发布 于 2023-08-25 13:42:54
举报
文章被收录于专栏: 前端资源

antd(Ant Design)是一个基于 React 的UI组件库,它提供了丰富的组件和设计规范,可以帮助开发者快速构建高质量的前端应用。

​

DatePicker 是 antd 的日期选择器组件,支持弹出的日历面板,点击选择或输入日期。

DatePicker 还支持设置不可选日期,即禁止用户选择某些特定的日期,比如限制用户只能选择有效期内的日期,或者只能选择未来或过去的日期等。

本文将介绍如何使用 antd 的 DatePicker 组件设置不可选日期:根据 antd 官方示例实现后,让 New Bing 新必应优化代码,结果让我很惊喜。

实现方法:

antd 官方示例方法:

代码语言: javascript
复制
const disabledDate: RangePickerProps['disabledDate'] = (current) => {
  // Can not select days before today and today
  return current && current < dayjs().endOf('day');
};

因为我处理时间用的是 Moment.js 的库,参考 antd 官方示例,代码如下:需要设置 begin 前和 end 后的日期不可选

代码语言: javascript
复制
import React, { useState } from 'react';
import moment from 'moment';
import { DatePicker } from 'antd';
const DateTimePicker = (props) => {
  const [begin] = useState(props.begin);
  const [end] = useState(props.end);
  const [value, setValue] = useState(moment());
   * @description: 处理不可选择的时间
   * @return {*}
  const handleDisabledDate = (current) =>
    current && (current < moment(begin).startOf('day') || current > moment(end).endOf('day'));
  return <DatePicker value={value} disabledDate={handleDisabledDate} onChange={(event) => event && setValue(event)} />;
export default DateTimePicker;

我觉得这样写看上去有点复杂,就把方法部分代码发给必应,让必应看一下,有没有可优化的地方。

下面是 New Bing 的回答:

帮我优化一下这段代码:

代码语言: javascript
复制
const handleDisabledDate = (current) => current && (current < moment(begin).startOf('day') || current > moment(end).endOf('day'))

根据我从网络上搜索到的信息,函数优化的目的是提高函数的效率和可读性,减少不必要的计算和内存消耗。对于你的这段代码,你可以考虑以下几点:

  • 检查你的 current 参数是否是一个 moment 对象,如果是,那么你可以省略 moment() 的调用,直接使用 current 的方法。
  • 检查你的 begin 和 end 参数是否是固定的值,如果是,那么你可以将 moment(begin).startOf('day') 和 moment(end).endOf('day') 提前计算好,避免每次调用函数时都重复计算。
  • 检查你的逻辑是否可以简化,比如使用 isBefore 和 isAfter 方法来代替比较运算符。

综合以上几点,你可以尝试以下的优化代码:

代码语言: javascript
复制
// 假设 current 是一个 moment 对象
// 假设 begin 和 end 是固定的值
const beginDay = moment(begin).startOf('day'); // 提前计算
 
推荐文章
淡定的跑步机  ·  全国高低风险地区名单(截至2022年11月18日8时) _ 疫情动态 _ 省卫健委
6 月前
刚毅的海龟  ·  2023年中国工控企业竞争力排行榜TOP10 - OFweek工控网
9 月前
星星上的红烧肉  ·  2024最新最全【AIGC】学习零基础入门到精通,看完这一篇就够了!_aigc学习路线-CSDN博客
1 年前
小眼睛的黑框眼镜  ·  用 javascript 判断 IE 版本号支持IE6,IE7,IE8,IE9,IE10,IE11_的技术博客_51CTO博客
2 年前
淡定的匕首  ·  电影《坎大哈陷落》赋予了动作爽片新的意义 - 知乎
2 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号