react Antd3以下实现年份选择器 YearPicker

news2024/11/26 17:38:38

项目antd版本低,没有直接可使用的年份选择器,参考此篇(使用antd实现年份选择器控件 - 掘金)

一开始在state里设置了time:

this.state = {
    isopen: false,
    time: null
}

在类似onChange事件里this.setState({time: value}),datepicker里传value属性:

<DatePicker
{...this.props}
mode='year'
format='YYYY'
open={this.state.isopen}
value={this.state.time}  // 这里
onOpenChange={this.handleOpenChange}
onPanelChange={this.handlePanelChange}
onChange={this.clearValue}
/>

确实每次选择完选择框里的值都变了,对应页面元素:

<input readonly="" placeholder="请选择年份" class="ant-calendar-picker-input ant-input" value="">

但是,getfieldvalue时发现value是选择框显示的值,不代表fieldvalue能get到的值。

改了下直接不用time这个state,直接暴力使用setFieldsValue修改,页面选择框显示的改了,真正的取值也改了。

最终版如下:

class YearPicker extends React.Component {
    constructor(props) {
        super(props)
    
        this.state = {
            isopen: false
        }
    }
    handlePanelChange = value => {
        this.setState({isopen: false})
        this.props.onPanelChange && this.props.onPanelChange(value)
    }
    handleOpenChange = status => { 
        if (status) {
            this.setState({ isopen: true })
        } else {
            this.setState({ isopen: false })
        }
    } 
    clearValue = () => {
        this.props.onPanelChange && this.props.onPanelChange(null);
    }
    render() {
        return (
            <div>
                <DatePicker
                {...this.props}
                mode='year'
                format='YYYY'
                open={this.state.isopen}
                onOpenChange={this.handleOpenChange}
                onPanelChange={this.handlePanelChange}
                onChange={this.clearValue}
                />
            </div>
        )
    }
}

使用:
 

const onAAAPanelChange = value => {
    setFieldsValue({aaa: value});
};
const onBBBPanelChange = value => {
    setFieldsValue({bbb: value});
};
<Form.Item {...formItemLayout} label="年份">
    {getFieldDecorator('aaa', {
        initialValue: moment(),  // 有默认值的情况
        rules: [{ required: true, message: '请选择年份' }],
    })(
        <YearPicker 
        onPanelChange={onAAAPanelChange}
        style={{ width: '100%' }} 
        />
    )}
</Form.Item>

<Form.Item {...formItemLayout} label="选择时间">
    {getFieldDecorator('bbb', {
        validateTrigger: 'onBlur', 
    })(
        <YearPicker 
        placeholder="请选择年份" 
        style={{ width: '100%' }}
        onPanelChange={onBBBPanelChange}
        />
    )}
</Form.Item>

效果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1208046.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux系统软件安装方式

Linux系统软件安装方式 1. 绿色安装2. yum安装3. rpm安装3.1 rpm常用命令 4. 源码安装4.1 安装依赖包4.2 执行configure脚本4.3 编译、安装4.4 安装4.5 操作nginx4.6 创建服务器 1. 绿色安装 Compressed Archive压缩文档包&#xff0c;如Java软件的压缩文档包&#xff0c;只需…

图形学中的噪声

1 value noise 四个点取随机数然后做插值。 float random (in vec2 st) {return fract(sin(dot(st.xy,vec2(12.9898,78.233)))* 43758.5453123); }float noise (in vec2 st) {vec2 i floor(st);vec2 f fract(st);float a random(i);float b random(i vec2(1.0, 0.0));fl…

centralwidget 不能布局

必须要在QT ui中添加一个任意的子控件&#xff08;比如添加了一个pushButton&#xff09;&#xff0c;然后在centralwidget 才能右键设置布局&#xff0c;成功去掉centralwidget 右下角的红色的标记。

如何制作出高级感满满的的照片书

随着数码相机的普及&#xff0c;越来越多的人喜欢将生活中的点滴美好记录下来&#xff0c;其中照片书就是一种非常受欢迎的方式。但是&#xff0c;如何制作出高级感满满的“照片书”呢&#xff1f;今天&#xff0c;我们就来分享几个小技巧&#xff0c;帮助你轻松打造出令人惊艳…

RT-DETR算法优化改进:Backbone改进|RIFormer:无需TokenMixer也能达成SOTA性能的极简ViT架构 | CVPR2023

💡💡💡本文独家改进:RIFormer助力RT-DETR ,替换backbone, RIFormer-M36的吞吐量可达1185,同时精度高达82.6%;而PoolFormer-M36的吞吐量为109,精度为82.1%。 推荐指数:五星 RT-DETR魔术师专栏介绍: https://blog.csdn.net/m0_63774211/category_12497375.html …

2023企业如何挑选智能工单系统?选亿发工单管理解决方案提供商,移动派单

在企业运作中&#xff0c;工单管理是一项至关重要的工作流程&#xff0c;可以使用标准化、系统化的方式对问题和请求进行全面管理、维护和追踪。 然而&#xff0c;传统的工单处理方式常常受到办公地点和时间的限制&#xff0c;存在工单录入繁琐易错、工作流程曲折耗时、跨部门协…

车间部署MES管理系统后有哪些变化

随着智能制造技术的飞速发展&#xff0c;工厂车间正经历着一场由数字化管理和智能化协调优化驱动的变革。这场变革的核心便是MES管理系统。实施MES管理系统在提升生产效率、降低成本、提高产品质量和优化资源投入方面发挥着重要作用&#xff0c;助力工厂实现整体运作的协作管理…

搭建项目环境,集成ts和jest

前言 开新坑。 斥巨资购入大崔哥的 mini-vue 课程&#xff0c;为了改变自己东一榔头西一棒槌的学习状态&#xff0c;也是因为深刻思考了自己身无长物浑浑噩噩这么多年只会敲代码&#xff0c;别无出路&#xff0c;也只能提升自己继续走技术这条路&#xff0c;那提高技术绕不过…

ctfshow sql入门174 175脚本

因为觉得脚本写的太烂了&#xff0c;二分法也迷迷糊糊的 主要是python怎么学的那么烂&#xff01;&#xff01; 再研究一下 174 布尔盲注 这是不使用二分法的 import requestsurl http://e9a1012f-6cb2-451d-9084-0d011dfcff89.challenge.ctf.show/api/v4.php flag for …

Kerberos认证系统

文章目录 前提知识原理第一次对话第二次对话第三次对话 总结发现 前提知识 KDC&#xff1a;由AS、TGS&#xff0c;还有一个Kerberos Database组成。 Kerberos Database用来存储用户的密码或者其他所有信息&#xff0c;请求的时候需要到数据库中查找。 AS&#xff1a;为客户端提…

不同类型的软件企业该如何有效的管理好你的软件测试团队?

最近在网上发现一篇记录了2012年《[视频]作为测试经理如何有效管理好你的软件测试团队》的文字内容&#xff0c;感谢记录的人&#xff0c;我也保存一下。顺便将演讲中的PPT重点截图也放上来&#xff0c;一并保存了&#xff01;。由于是现场速记&#xff0c;过度的口语化&#x…

风景照片不够清晰锐利,四招帮你轻松解决

我们大家在拍摄风景照的时候都希望能够拍摄出清晰锐利的照片。可能会有人问&#xff1a;“什么是锐利&#xff1f;”我们可以从锐度来给大家简单解说下。锐度是反映图片平面清晰度和图像边缘对比度的一个参数。锐度较高的画面&#xff0c;微小的细节部分也会表现得很清晰&#…

springboot项目的可执行jar以后台本地服务的方式运行在Windows机器上

文章目录 先上一个效果图准备可执行文件注册及启动服务用到的工具 前段时间遇到一个项目&#xff0c;需要我们提供一个驱动控件&#xff0c;可以以后台服务的方式运行在Windows机器上。开始寻找各种解决办法。 最后发现一个不错的解决方式。分享给大家一下。 先上一个效果图 准…

ESP32/ESP8266基于Arduino框架下驱动1.8“tft_oled屏幕仿数码管时钟

ESP32/ESP8266基于Arduino框架下驱动1.8"tft_oled屏幕仿数码管时钟 &#x1f4cd;相关篇《ESP32基于Arduino框架下U8g2驱动I2C OLED 时间显示》&#x1f4fa;效果演示&#xff1a; &#x1f33f;屏幕显示部分&#xff0c;采用使用TFT_eSPI库驱动&#xff0c;利用该库自带的…

2021年03月 Scratch(一级)真题解析#中国电子学会#全国青少年软件编程等级考试

一、单选题(共25题,每题2分,共50分) 第1题 花花幼儿园有三个班。根据下面三句话,请你猜一猜,哪个班级人数最多? (1)中班比小班少 (2)中班比大班少 (3)大班比小班多 A:小班 B:中班 C:大班 D:三个班级一样多 答案:C 根据(1)(2)可以知道中班人数最少,根…

Power Automate-创建一个power Apps使用的流

创建即时云端流&#xff0c;选择Power Apps

口袋参谋:99.99%的商家,都不知道这个选品神器!!!

​至少有99.99%的商家是不知道如何选品的&#xff1f;很多人都是看人家卖什么&#xff0c;自己就卖什么&#xff1f;就比如卖连衣裙的&#xff0c;试问咱们卖之前都不做一下调查吗&#xff1f; 现在同质化的商品太多了&#xff0c;随便搜一个&#xff0c;就有成千上万的竞争者…

EasyA正在帮助Sui为新一代Web3 App培养构建者

最近&#xff0c;我们采访了Phil和Dom Kwok&#xff0c;他们是兄弟也是Web3教育移动应用EasyA的共同创始人。这个教育app通过学习模块和编码挑战的形式&#xff0c;向开发人员教授有关不同区块链及其独特特性的知识。他们在十月初推出了他们的第一个Sui模块&#xff0c;并在随后…

(个人实测保熟)记录Tecnomatix Process Simulate 16.1.2官方安装包及授权许可配置教程(Win10环境)

Tecnomatix Process Simulate 16是一款由西门子公司推出的一款工艺仿真解决方案,是虚拟制造仿真领域的领先解决方案,可帮助您数字化制造以及将创新思想和原材料转变为变革性产品的过程。在网上找了一些盗版的安装包&#xff0c;就很离谱。直接提示本"无法打开此安装程序包…

数字化时代,企业如何增加产品销售额

2023作为提振消费年&#xff0c;国民宏观经济环境正在复苏&#xff0c;而数字化技术的进步也使消费者的购买方式发生了翻天覆地的变化&#xff0c;对于企业而言&#xff0c;应该如何顺势而上增加产品销售额&#xff0c;成为其成功的关键。 今天媒介盒子就来和大家聊聊企业如何…