封裝一個漂亮的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類型選擇的時間值


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM