antd的DatePicker组件怎样自己设置页脚

作者 : 开心源码 本文共2108个字,预计阅读时间需要6分钟 发布时间: 2022-05-12 共216人阅读

思路整理:自己写input–自己定义图标—隐藏默认显示出来的datepicker组件–通过点击图标的时候手动控制datepicker组件显示出来—选中日期或者者自己设置页脚的时候赋值给要传给后端的变量

代码解读:

在解读代码前需要理解antd官网定义的几个方法

1.renderExtraFooter//antd官网提供的加入额外页脚的方法
2.open//antd官网提供的控制弹层能否开展的方法 true是打开,false是关闭
3.onOpenChange //antd官网提供的弹出日历和关闭日历的回调,里面有一个内置参数status,我在外层定义了一个参数Pickerstatus和状态同步
4.getCalendarContainer //antd官网提供的定义浮层的容器的方法,由于是自己设置的所以浮窗的位置可能不满意,我们可以定义一下他的父元素,而后在进行具体的调节位置

render中的input是自己定义的,其中里面定义了一个icon日历图标,当点击的时候,触发datepicker组件的弹出。其中组件的弹出和关闭时手动设置的变量 Pickerstatus默认是false, 点击的时候使Pickerstatus变为true
render中的datepicker组件默认是显示的状态,所以,我在里面设置了一个样式display:none;不让他显示,
通过open方法根据参数的true/false来手动控制什么时候显示和隐藏,
通过renderExtraFooter自己设置页脚(我是放在了renderyear方法中定义了两个tag标签年初年末),点击年初年末的时候利用事件对象e.target.value获取点击的value值而后赋值给显示在input中的value值this.label,同时点击完之后让datepicker弹窗关闭
代码如下

state={     Pickerstatus: false,}//点击图标的时候弹窗弹出来  handleCalenderInput = () => {    this.setState({      Pickerstatus: true    });  };//日期组件额外的页脚  renderyear = () => {    return (      <div>        <Tag color="#108ee9" onClick={this.TagClick} data-value="年初">          年初        </Tag>        <Tag color="#108ee9" onClick={this.TagClick} data-value="年末">          年末        </Tag>      </div>    );  };  //点击标签的时候触发的函数  TagClick = e => {    console.log("e", e);    console.log("e.target", e.target); //其作用是指向返回事件的目标节点(触发该事件的节点)    console.log("e.target.dataset", e.target.dataset);    this.setState({      addSchedukeTime: e.target.dataset.value,      Pickerstatus: false    });    this.label = e.target.dataset.value;  };  //点击图标的时候弹窗弹出来  handleCalenderInput = () => {    this.setState({      Pickerstatus: true    });  };  //时间改变的时候调用的方法  datepickerChange = (date, dateString) => {    console.log(date, dateString);    this.setState({      addSchedukeTime: dateString    });    this.label = dateString;  };render(){    return(    <div id="toparea">        <Input        value={this.label}        readOnly        suffix={        <Icon onClick={this.handleCalenderInput}  type="calendar"/>        }    />    <DatePicker        style={{ display: "none", position: "absolute" }}        disabled={disabled}        onChange={this.datepickerChange}        placeholder="请选择"        mode={"date"}        open={this.state.Pickerstatus} //antd官网提供的控制弹层能否开展的方法        renderExtraFooter={this.renderyear} //antd官网提供的加入额外页脚的方法        getCalendarContainer={() =>  //antd官网提供的定义浮层的容器的方法        document.getElementById("toparea")        }        onOpenChange={status => { //antd官网提供的弹出日历和关闭日历的回调           if (!status) {            this.setState({            Pickerstatus: false            });          }        }}    />    </div> )}   

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » antd的DatePicker组件怎样自己设置页脚

发表回复