react16+antd4 RangePicker组件实现时间禁选示例
更新时间:2023年05月31日 08:51:39 作者:灰太狼的情与殇
这篇文章主要为大家介绍了react16+antd4 RangePicker 时间禁选示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
正文
开发环境 react16+antd4
电脑系统 windows11专业版
分享一下 react+antd RangePicker组件的时间禁选,废话不多说
代码
const [dateType, setdataType] = useState([ { value: '按日', key: 1 }, { value: '按月', key: 2 } ]); const [dateTime, setDateTime] = useState([ moment().add(-1, 'years').add(0, "months").format("YYYY-MM"), moment().format("YYYY-MM"), ]); const [timeValue, setTimeValue] = useState([ moment(moment().add(-1, 'years').add(0, "months"), 'YYYY-MM'), moment(moment(), 'YYYY-MM') ]); const [timeFormat, setTimeFormat] = useState('YYYY-MM'); const [pickerValue, setPickerValue] = useState('month');
const getDay = () => { setDateTime([ moment().add(-1, "months").format("YYYY-MM-DD"), moment().format("YYYY-MM-DD"), ]); setTimeValue([ moment(moment().add(-1, "months"), 'YYYY-MM-DD'), moment(moment(), 'YYYY-MM-DD') ]); setTimeFormat('YYYY-MM-DD'); setPickerValue('date'); }; const getMonth = () => { setDateTime([ moment().add(-1, 'years').add(0, "months").format("YYYY-MM"), moment().format("YYYY-MM"), ]); setTimeValue([ moment().add(-1, 'years').add(0, "months"), moment(moment(), 'YYYY-MM') ]); setTimeFormat('YYYY-MM'); setPickerValue('month'); } // 时间类型 变化 const TimeTypeChange = (value, option) => { setdateTypeValue(value); switch (+value) { case 1://按日 getDay(); break; case 2://按月 getMonth(); break; } } const timeDisabled = (current) => { switch (+dateTypeValue) { case 1:// 按日 return day_disabledDate(current); break; case 2:// 按月 return month_disabledDate(current); break; } } const month_disabledDate = (current) => { if (!timeValue) { return false; } const tooLate = timeValue[0] && current.diff(timeValue[0], 'months') > 11; const tooEarly = timeValue[1] && timeValue[1].diff(current, 'months') > 11; return !!tooEarly || !!tooLate; }; const day_disabledDate = (current) => { if (!timeValue) { return false; } const tooLate = timeValue[0] && current.diff(timeValue[0], 'months') > 0; const tooEarly = timeValue[1] && timeValue[1].diff(current, 'months') > 0; const disable_day = current && current < moment().endOf('day'); return !!tooEarly || !!tooLate || !disable_day; } const onOpenChange = (open) => { if (open) { setTimeValue([null, null]); } }; const _onRangePickerChange = (date, dateString) => { // setTimeValue(dateString); setTimeValue(date); setDateTime(dateString); } const onCalendarChange = (value) => { setTimeValue(value); }
<Select placeholder='请选择时间类型' value={dateTypeValue == 1 ? '按日' : '按月'} onChange={TimeTypeChange} getPopupContainer={triggerNode => triggerNode.parentElement}> {dateType && dateType.map((item) => { return ( <Option key={item.key} value={item.key}>{item.value}</Option> ) })} </Select> <RangePicker style={{ width: 330, marginLeft: 5 }} value={timeValue} format={timeFormat} allowClear={false} disabledDate={timeDisabled} picker={pickerValue} onChange={_onRangePickerChange} onOpenChange={onOpenChange} onCalendarChange={onCalendarChange} />
效果如下
// 默认 显示按月
// 选择按日禁选 效果
// 按月禁选
// 按日禁选
本期的分享到了这里就结束啦,希望对你有所帮助,让我们一起努力走向巅峰,更多关于react16 antd4 RangePicker的资料请关注脚本之家其它相关文章!
相关文章
React从react-router路由上做登陆验证控制的方法
本篇文章主要介绍了React从react-router路由上做登陆验证控制的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧2018-05-05react性能优化达到最大化的方法 immutable.js使用的必要性
这篇文章主要为大家详细介绍了react性能优化达到最大化的方法,一步一步优化react性能的过程,告诉大家使用immutable.js的必要性,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2017-03-03基于visual studio code + react 开发环境搭建过程
今天通过本文给大家分享基于visual studio code + react 开发环境搭建过程,本文给大家介绍的非常详细,包括react安装问题及安装 Debugger for Chrome的方法,需要的朋友跟随小编一起看看吧2021-07-07解决React报错Style prop value must be a
这篇文章主要为大家介绍了React报错Style prop value must be an object解决,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2022-12-12详解使用webpack+electron+reactJs开发windows桌面应用
这篇文章主要介绍了详解使用webpack+electron+reactJs开发windows桌面应用,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧2019-02-02
最新评论