index.js 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  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 } = this.props;
  29. return (
  30. <div className={`g-date-block ${hideInput ? 'hide-input' : ''}`}>
  31. <DatePicker
  32. open
  33. dropdownClassName={`g-date ${hideInput ? 'hide-input' : ''}`}
  34. disabledDate={disabledDate}
  35. dateRender={date => this.dateRender(date)}
  36. />
  37. </div>
  38. );
  39. }
  40. }