zoukankan      html  css  js  c++  java
  • 封装一个漂亮的ant design form 时间选择组件

    在ant design 的form组件中 能用于提交的组件比较少,所以我在这写了一个可以用日期选择提交的组件,调用非常简单。

    代码:

     1 import React,{Fragment} from 'react';
     2 import moment from 'moment';
     3 import { DatePicker,Input } from 'antd';
     4 export interface Props {
     5     style?:any,//样式
     6     default?:string | moment.Moment,//默认值
     7     form?:any,//表单
     8     validationName?:string,//提交名称,用于菜单提交获取
     9     submitString?:boolean,//提交类型为字符串
    10     format?:string,//字符串格式,用于默认值及提交值
    11 }
    12  
    13 export interface State {
    14     date:moment.Moment | undefined,//选中的时间值,moment类型
    15     dateVal:string,//选中的时间值,string类型
    16 }
    17  
    18 class myDatePicker extends React.Component<Props, State> {
    19     constructor(props: Props) {
    20         super(props);
    21         this.state = { 
    22             date: typeof this.props.default === 'string'?moment(this.props.default,this.props.format):this.props.default,
    23             dateVal: typeof this.props.default === 'string'?this.props.default:(this.props.default!==undefined?this.props.default.format(this.props.format):''),
    24         };
    25     }
    26     setData=(moment:moment.Moment | null,dateVal:string)=>{
    27         let date:moment.Moment | undefined;
    28         if(moment === null){
    29             date = undefined;
    30         }else{
    31             date = moment;
    32         }
    33         this.setState({date,dateVal});
    34     }
    35     render() { 
    36         return (
    37             <Fragment>
    38                 <DatePicker value = {this.state.date} onChange={(moment:moment.Moment | null,dateVal:string)=>
    39                     {this.setData(moment,dateVal)}} style={this.props.style} />
    40                 {
    41                     this.props.form!== undefined && this.props.form.getFieldDecorator !== undefined?
    42                     this.props.form.getFieldDecorator(this.props.validationName!== undefined ? this.props.validationName:'datePicker', {
    43                         initialValue: this.props.submitString ? this.state.dateVal : this.state.date,
    44                       })(<Input type="hidden"/>)
    45                     :undefined
    46                 }
    47             </Fragment> 
    48          );
    49     }
    50 }
    51 export default myDatePicker;

    调用示例:

    效果:

     

     

     

    也可以在普通页面中调用:

     获取字符串类型选择的时间值

     获取moment类型选择的时间值

  • 相关阅读:
    使用JQuery+HTML写一个简单的后台登录页面,加上对登录名和密码的前端校验。
    Shiro入门3
    Shiro入门2
    Shiro入门1
    Spring+SpringMVC+Mybatis整合 pom示例
    IO(1)----File类
    集合(3)—— Map
    集合(3)—— Set
    集合(2)——List集合
    集合(1)
  • 原文地址:https://www.cnblogs.com/chengpu/p/web6.html
Copyright © 2011-2022 走看看