在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類型選擇的時間值