m-date-picker 基于 React,提供了 iOS 风格的日期选择方式,与原生 Datepicker 非常相似。
主页: https://github.com/react-component/m-date-picker
Demo: http://react-component.github.io/m-date-picker/examples/popup.html
推荐: ★★★★★
优点: 使用流畅,与原生 Datepicker 非常相似;功能强大,能满足一般需求
不足: 暂无
官方给的demo 是基于源码内部引用的,与我们实际npm i 以后集成使用有差别的, 现提供实际引用的代码:
npm i rmc-date-picker --s
基于rmc-date-picker@6.0.8 示例
import 'rmc-picker/assets/index.css';
import 'rmc-date-picker/assets/index.css';
import 'rmc-picker/assets/popup.css';
import zh_CN from 'rmc-date-picker/lib/locale/zh_CN';
import DatePicker from 'rmc-date-picker/lib/DatePicker';
import PopPicker from 'rmc-date-picker/lib/Popup';
class Demo extends React.Component{
constructor(props) {
super(props);
this.state = {
date: null,
};
}
onChange = (date) => {
console.log('onChange', this.format(date));
this.setState({
date,
});
}
format=(date)=>{
let mday = date.getDate();
let month = date.getMonth() + 1;
month = month < 10 ? `0${month}` : month;
mday = mday < 10 ? `0${mday}` : mday;
return `${date.getFullYear()}-${month}-${mday} ${date.getHours()}:${date.getMinutes()}`;
}
onDismiss = () => {
console.log('onDismiss');
}
render() {
const { date } = this.state;
const datePicker = (
<DatePicker
rootNativeProps={{'data-xx': 'yy'}}
minDate={new Date(2015, 8, 15, 10, 30, 0)}
maxDate={new Date(2019, 8, 15, 10, 30, 0)}
defaultDate={new Date()}
mode={'date'}
locale={zh_CN}
/>
);
return <div style={{ margin: '10px 30px' }}>
<h2>popup date picker</h2>
<div>
<PopPicker
datePicker={datePicker}
transitionName="rmc-picker-popup-slide-fade"
maskTransitionName="rmc-picker-popup-fade"
title={'选择日期'}
date={date}
okText={'确认'}
dismissText={'取消'}
onDismiss={this.onDismiss}
onChange={this.onChange}>
<p>点我</p>
//触发弹框显示 只需在此处放任意标签即可
</PopPicker>
</div>
</div>;
}
}
Screenshots
web
ios
android
API
DatePicker props
name | description | type | default |
---|---|---|---|
className(web) | additional css class of root dom node | String | ” |
prefixCls(web) | prefix class | String | ‘rmc-date-picker’ |
pickerPrefixCls(web) | picker prefix class | String | ‘rmc-picker’ |
defaultDate | default selected date. | Date | |
date | The currently selected date. | Date | |
mode | The date picker mode. | String | ‘date’ enum(‘date’, ‘time’, ‘datetime’, ‘year’, ‘month’) |
minDate | min date | Date | 2000-1-1 |
maxDate | max date | Date | 2030-1-1 |
locale | the locale of area | Object | import from ‘rmc-date-picker/lib/locale/en_US’ |
use12Hours | 12 hours display mode | Boolean | false |
minuteStep | The amount of time, in minutes, between each minute item. | Number | 1 |
onDateChange | Date change handler. | Function(date: Date) | ” |
onValueChange | fire when picker change | (vals: any, index: number) => void | |
formatMonth | Customize display value of months | (month:number, current:Date) => React.Node | |
formatDay | Customize display value of days | (day:number, current:Date) => React.Node |
rmc-date-picker/lib/Popup props
name | description | type | default |
---|---|---|---|
className(web) | additional css class of modal node | String | ” |
style(web) | additional modal style | object | {} |
popupTransitionName(web) | String | ||
maskTransitionName(web) | String | ||
prefixCls(web) | popup’s prefix class | String | ‘rmc-picker-popup’ |
styles(react-native) | PopupPicker’s styles | StyleSheet.create | |
datePicker | DatePicker element | React DatePicker element | |
date | The currently selected date. | Date | |
visible | whether pop picker is visible | Boolean | false |
onChange | exec on ok | Function(date: Date) | |
onVisibleChange | called when pop picker visible change | Function | |
onDismiss | exec on dismiss | function | |
okText | ok button text | string/React.ReactElement | ‘Ok’ |
dismissText | dismiss button text | string/React.ReactElement | ‘Dismiss’ |
title | Popup title | string/React.ReactElement | ” |