最近在开发的时候,发现antd的datepicker组件,设置mode="year"时候,年份组件交互上有一些bug问题,后来自己基于antd上的picker,进行了改装,能进行年份选择的效果

组件代码如下:

import React from 'react';
import { DatePicker } from 'antd';
import moment from 'moment';
import ReactDOM from 'react-dom';class YearPicker extends React.Component {static getDerivedStateFromProps(nextProps) {if ('value' in nextProps) {return {...(nextProps.value || {})};}return null;}constructor(props) {super(props);const value = props.value;// console.log('年份选择', value, props);this.state = {open: false};}triggerChange = changedValue => {const onChange = this.props.onChange;if (onChange) {onChange(changedValue);}};changeRender = v => {// console.log("changeRender_v.m", v);this.setState({open: false},() => this.triggerChange(moment(v).format('YYYY')));};clearValue = () => {this.triggerChange();};setOpenState = () => {this.setState({open: !this.state.open});};componentDidMount = () => {};render() {const { open } = this.state;const { value, style } = this.props;return (<DatePickermode="year"format="YYYY"placeholder={this.props.placeholder}value={value ? moment(value) : null}onPanelChange={this.changeRender}onOpenChange={this.setOpenState}onChange={this.clearValue} //点击清除按钮的回调open={open}style={{ ...style }}/>);}
}export default YearPicker;

调用方式:

<YearPickervalue={this.state.yearValue}placeholder="选择年份"onChange={this.onOptionChange}
/>

onchange回调方法:

// selectA改变的回调onOptionChange = value => {//console.log(value);this.setState({yearValue:value});};

这里使用的方法是通过组件外部的props的value来控制年份所选的值 (由于业务原因)

其实在yearpicker内部 通过内部的state保管自己的value亦可

基于antd DatePicker的年份组件相关推荐

  1. 支持大数据渲染下拉列表组件开发 SuperSelect(基于antd Select)

    功能简介 antd 的 Select 组件不支持大数据量的下拉列表渲染,下拉列表数量太多会出现性能问题, SuperSelect 基于 antd 封装实现,替换原组件下拉列表,只渲染几十条列表数据,随 ...

  2. antd Datepicker组件报错 ——date.clone is not a function或者date1.isAfter is not a function

    问题描述: antd Datepicker组件报错 --date.clone is not a function或者date1.isAfter is not a function 原因分析: 在Fro ...

  3. antd 日期时间选择_antd-mobile的DatePicker日期选择组件使用

    现在项目上有个需求,在时间选择上需要精确到分钟,且分钟只能是0分钟或者是30分钟. 其中组件有个minuteStep参数,将其设置成30,即可只显示0分钟或者30分钟了. 但是在选择的时候发现了问题, ...

  4. antd 日期选择框如何提交_基于Ant Design的Modal组件来实现一个可拖拽的React模态框...

    引言 写这篇文章的原因是因为在项目中用到了Antd Design的React组件,当有业务需求需要用到模态框的时候遇到了一些小问题,Antd的模态框Modal组件时不能拖拽的,一般情况下不可拖拽也没什 ...

  5. 重构ElementUI解决DatePicker日期选择组件修改父组件placement参数问题[Vue.js项目实践: 新冠自检系统]

    新冠疫情自我检测系统网页设计开发文档 Sylvan Ding 的第一个基于 Vue.js 的项目. 本项目所提供的信息,只供参考之用,不保证信息的准确性.有效性.及时性和完整性,更多内容请查看国家卫健 ...

  6. 【工作流引擎】Flowable流程设计器 基于bpmnjs开发的vue组件

    [工作流引擎]Flowable流程设计器 基于bpmnjs开发的vue组件 设计器介绍 集成设计器 设计器介绍 bpmn.js官网 bpmn.js 是一个BPMN2.0渲染工具包和web建模器, 使得 ...

  7. 基于jquery的php分页,基于jQuery封装的分页组件

    前言: 由于项目需要实现分页效果,上jQuery插件库找了下,但是木有找到自己想要的效果,于是自己封装了个分页组件. 思路: 主要是初始化时基于原型建立的分页模板然后绑定动态事件并实现刷新DOM的分页 ...

  8. value数字 vue_基于Vue开发数字输入框组件

    随着 vue 越来越火热, 相关组件库也非常多啦, 只用轮子怎么够, 还是要造起来!!! 1.概述 vue组件开发的api:props.events和slots 2.组件代码 效果: (1)index ...

  9. 实现一个基于Vue的Button小组件

    概述 原生HTML的button只能保证功能存在,样式都不怎么好看.当然也可以通过编写css样式来改变原生HTML中的button显示,但是现在各个UI框架都很流行,也很方便,很多时候都是直接引入框架 ...

最新文章

  1. 记 fastjson泛型转对象 第一次可以正常转,第二次就变成JSONArray 问题
  2. 一名提高选手的数论之路(一)
  3. 爬虫实战:要不是热爱学习,谁会爬小姐姐。分析Ajax来爬取今日头条街拍美图(python)
  4. PJ Naughter's Freeware Library
  5. 一个经典的WIN32窗口应用
  6. SourceTree的基本使用 - 天字天蝎 - 博客园
  7. rk3399_android7.1的HDMI显示实现固定分辨率
  8. 机器学习: 最大似然估计 (MLE) 最大后验概率(MAP)
  9. c语言二级java难吗_计算机二级考JAVA还是C?
  10. 笔记本电脑测试性能哪个软件好,新笔记本测试如何进行 旧笔记本测试性能【图文】...
  11. Ubuntu卸载Anaconda步骤
  12. nexus6 android 6.0 root,KingRoot国内首个攻破Nexus6 支持超万款手机一键Root
  13. windowsXP操作系统的基本功能
  14. 服务器解压文件出错,四大方法解决解压文件出错问题|解压文件出错
  15. 2009年最极品的冷笑话汇集!(超经典)
  16. 内向的人和陌生人聊天,如何做到有话可说
  17. ‘click‘ handler took 3858s如何解决
  18. 目前最全的机器学习知识结构图(11月1日更新)
  19. python继续教育_济宁市专业技术人员继续教育自动化观看课程工具
  20. 诸侯安置(暴力搜索)

热门文章

  1. 力扣算法学习计划打卡:第八天
  2. 软件破解网站列表--整理于2014-3-30
  3. 软件工程--沃尔沃物流信息系统tp5实现源码
  4. java代码生成_Java代码生成器CodeX4J介绍
  5. learining user's intrinsic and extrinsic interests for point of interest recommendation IJCAI17
  6. 用C#打开Windows自带的图片传真查看器
  7. ThinkPad触摸板开启或者关闭方法
  8. 工作琐事太多怎么办_待办的事情太多,如何有条不紊的进行工作呢?
  9. DeprecationWarning: NEAREST is deprecated and will be removed in Pillow 10 (2023-07-01). Use Resampl
  10. Meetup回顾|星策社区FeatureStore Meetup V2