12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- import React, { Component } from 'react';
- import './index.less';
- import { DatePicker } from 'antd';
- export default class extends Component {
- constructor(props) {
- super(props);
- this.state = { key: 0 };
- this.loading = false;
- }
- dateRender(date) {
- const { dateRender, checkRefresh } = this.props;
- if (!this.loading && checkRefresh) {
- if (checkRefresh(date, () => this.needRefresh())) {
- this.loading = true;
- }
- }
- if (dateRender) return dateRender(date);
- return date.get('date');
- }
- needRefresh() {
- this.setState({ key: this.state.key + 1 });
- this.loading = false;
- setTimeout(() => {
- this.setState({ key: this.state.key + 1 });
- }, 1);
- }
- render() {
- const { hideInput, disabledDate, value, onChange } = this.props;
- return (
- <div className={`g-date-block ${hideInput ? 'hide-input' : ''}`}>
- <DatePicker
- open
- value={value}
- dropdownClassName={`g-date ${hideInput ? 'hide-input' : ''}`}
- disabledDate={disabledDate}
- dateRender={date => this.dateRender(date)}
- onChange={(date) => onChange(date)}
- />
- </div>
- );
- }
- }
|