index.js 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import React, { Component } from 'react';
  2. import './index.less';
  3. import { DatePicker } from 'antd';
  4. export default class extends Component {
  5. constructor(props) {
  6. super(props);
  7. this.state = { key: 0 };
  8. this.loading = false;
  9. }
  10. dateRender(date) {
  11. const { dateRender, checkRefresh } = this.props;
  12. if (!this.loading && checkRefresh) {
  13. if (checkRefresh(date, () => this.needRefresh())) {
  14. this.loading = true;
  15. }
  16. }
  17. if (dateRender) return dateRender(date);
  18. return date.get('date');
  19. }
  20. needRefresh() {
  21. this.setState({ key: this.state.key + 1 });
  22. this.loading = false;
  23. setTimeout(() => {
  24. this.setState({ key: this.state.key + 1 });
  25. }, 1);
  26. }
  27. render() {
  28. const { hideInput, disabledDate, value, onChange } = this.props;
  29. return (
  30. <div className={`g-date-block ${hideInput ? 'hide-input' : ''}`}>
  31. <DatePicker
  32. open
  33. value={value}
  34. dropdownClassName={`g-date ${hideInput ? 'hide-input' : ''}`}
  35. disabledDate={disabledDate}
  36. dateRender={date => this.dateRender(date)}
  37. onChange={(date) => onChange(date)}
  38. />
  39. </div>
  40. );
  41. }
  42. }