RangeError: Превышен максимальный размер стека вызовов при установке минимальной и максимальной даты - PullRequest
0 голосов
/ 17 декабря 2018

Я сталкиваюсь с проблемой максимального размера стека вызовов при установке минимально-максимальной даты для средства выбора даты.У меня есть два выбора даты (дата просмотра, дата окончания).Когда я выбираю дату начала, я устанавливаю минимальную дату для средства выбора даты окончания, а когда я выбираю дату окончания, я устанавливаю максимальную дату для средства выбора даты начала.

Предоставление песочницы для того же самого.

Пример песочницы кода

Ниже я предоставляю тот же код:

Компонент Flatpickr

import React, {Component} from 'react';
import Flatpickr from 'react-flatpickr';
import 'flatpickr/dist/flatpickr.min.css';
import 'flatpickr/dist/themes/light.css';

export default class DatePicker extends Component {
  constructor(props) {
    super(props);
    this.setDate = this.setDate.bind(this);
    this.setDatePickerProps = this.setDatePickerProps.bind(this);

    this.state = {
      selectValue: props.selectValue ? props.selectValue : "",
      options: props.options ? props.options : {},
      placeholder: props.placeholder ? props.placeholder : {}
    };
  }

  componentWillReceiveProps(newProps){
    this.setState({
      selectValue: newProps.selectValue ? newProps.selectValue : "",
      options: newProps.options ? newProps.options : {},
      placeholder: newProps.placeholder ? newProps.placeholder : {}
        });
  }

  setDatePickerProps(propKey, propValue){
    this.refs.refDatePicker.flatpickr.set(propKey, propValue);
  }

  clearDate(){
    this.refs.refDatePicker.flatpickr.clear();
  }

  setDate(newValue){
    this.setState({
             selectValue: newValue ? newValue : ""
        });
    if(this.props.onChange){
      this.props.onChange(newValue);
    }
  }

  render(){
    return (
      <Flatpickr className="form-control clickable" ref="refDatePicker" placeholder={this.state.placeholder} options={this.state.options} value={this.state.selectValue} onValueUpdate={this.setDate} />
    );
  }
}

Ниже приведен код для установки минимальной и максимальной даты на родительском компоненте.

onFilterDateChange(str, date){
    if(str === "start"){
      this.refEndDatePicker.setDatePickerProps("minDate", date[0] ? date[0] : "");
      this.setState({
        objSearch: Object.assign({},this.state.objSearch,{ startDate: date[0] ? date[0] : ""})
      });
    }
    else if(str === "end"){
      this.refStartDatePicker.setDatePickerProps("maxDate", date[0] ? date[0] : "");
      this.setState({
        objSearch: Object.assign({},this.state.objSearch,{ endDate: date[0] ? date[0] : ""})
      });
    }
  }

Когда я выбираю дату начала, все работает нормально, но как только я выбираю дату окончания, после этого появляется эта ошибка "RangeError: Превышен максимальный размер стека вызовов ".

Информация о среде * Используемая версия flatpickr

: 3.6.4

Имя и версия браузера: Chrome, Версия 70.0.3538.110 (официальная сборка) (64-разрядная версия)

ОС и версия: Windows 10 Pro

...