Reactjs 反应无限日历--保存多个日期

Reactjs 反应无限日历--保存多个日期,reactjs,calendar,Reactjs,Calendar,在我的react组件I中,允许用户选择多个日期 我想在用户单击日历下面的按钮后记录所有这些日期。但是,每次我尝试记录这些日期时,它都会返回一个空数组 我有,但仍然不起作用。任何建议都很好。下面是我的代码 import RaisedButton from 'material-ui/RaisedButton'; import InfiniteCalendar, { Calendar, defaultMultipleDateInterpolation, withMultipleDates } from

在我的react组件I中,允许用户选择多个日期

我想在用户单击日历下面的按钮后记录所有这些日期。但是,每次我尝试记录这些日期时,它都会返回一个空数组

我有,但仍然不起作用。任何建议都很好。下面是我的代码

import RaisedButton from 'material-ui/RaisedButton';
import InfiniteCalendar, { Calendar, defaultMultipleDateInterpolation, withMultipleDates } from 'react-infinite-calendar';
import '../../../node_modules/react-infinite-calendar/styles.css';

const MultipleDatesCalendar = withMultipleDates(Calendar);

class Planner extends React.Component {
    constructor(props) {
        super(props);
        this.state = {
            selectedDates: []
        };
     }

displayDates() {
   console.log("SELECTED DATES");
   console.log(this.selectedDates);
}

render() {
    return (
<InfiniteCalendar
     Component={MultipleDatesCalendar}
     height={250}
     interpolateSelection={defaultMultipleDateInterpolation}
     selected={this.state.selectedDates}
     layout={'portrait'}
     width={'100%'}
     onSelect={(selectedDate) => defaultMultipleDateInterpolation(selectedDate, 
     this.state.selectedDates)}
     />
<RaisedButton
    className=""
    target="_blank"
    label="Available"
    primary={true}
    onClick={() => this.displayDates(this.state.selectedDates)}
                                        />
    );
}

export default Planner
这对我有用

onSelect = { (selectedDate) =>{
            let aux = defaultMultipleDateInterpolation(selectedDate,this.state.dates)
            this.setState({
              dates:aux
            })
            return aux;
          }
        }
这对我有用

onSelect = { (selectedDate) =>{
            let aux = defaultMultipleDateInterpolation(selectedDate,this.state.dates)
            this.setState({
              dates:aux
            })
            return aux;
          }
        }

将日期数组添加到您的状态

state = {
  dates: []
};
然后将数组移除函数添加到类中

function arrayRemove(arr, value) {
  return arr.filter(function (ele) {
    return ele != value;
  });
}
然后将onSelect函数添加到InfiniteClendar

     <InfiniteCalendar
       Component={MultipleDatesCalendar}
       interpolateSelection={defaultMultipleDateInterpolation}
       selected={this.state.dates}
       onSelect={(date) => {
         var converted =  date.toLocaleString('default', { weekday: 'short' }) 
                      + ' ' + date.toLocaleString('default', { month: 'short' }) 
                      + ' ' + date.getDate() + ' ' +date.getFullYear() + ' 00:00:00';

       if (!this.state.dates.includes(converted)) {
         this.setState({
           dates: [...this.state.dates, converted]
         })

        return converted;

       } else {
         var result = arrayRemove(this.state.dates, converted);

        this.setState({
          dates: result
        })
    }
  }
} />

将日期数组添加到您的状态

state = {
  dates: []
};
然后将数组移除函数添加到类中

function arrayRemove(arr, value) {
  return arr.filter(function (ele) {
    return ele != value;
  });
}
然后将onSelect函数添加到InfiniteClendar

     <InfiniteCalendar
       Component={MultipleDatesCalendar}
       interpolateSelection={defaultMultipleDateInterpolation}
       selected={this.state.dates}
       onSelect={(date) => {
         var converted =  date.toLocaleString('default', { weekday: 'short' }) 
                      + ' ' + date.toLocaleString('default', { month: 'short' }) 
                      + ' ' + date.getDate() + ' ' +date.getFullYear() + ' 00:00:00';

       if (!this.state.dates.includes(converted)) {
         this.setState({
           dates: [...this.state.dates, converted]
         })

        return converted;

       } else {
         var result = arrayRemove(this.state.dates, converted);

        this.setState({
          dates: result
        })
    }
  }
} />