【问题标题】:React Date-picker Specific Date range not working反应日期选择器特定日期范围不起作用
【发布时间】:2016-06-03 08:15:52
【问题描述】:

我想突出显示特定日期范围(选定日期后 6 天)。我试过这个。但不工作。解决方案是什么? 这是我参考的示例代码

import React from "react";
import moment from 'moment';
import DayPicker, { DateUtils } from "react-day-picker";

import "react-day-picker/lib/style.css";

export default class DisabledDays extends React.Component {

state = {
 from: null,
 to:null,
};

handleDayClick(e, day, modifiers) {
const range = DateUtils.addDayToRange(day, this.state);
   this.setState(range);
}
handleChange = (day) => {
console.log("newDate", day);
return this.setState({date: day});
}

render() {
 const { from, to} = this.state;
 // Add the `selected` modifier to the cell of the clicked day
 const modifiers = {
   //disabled: DateUtils.isPastDay,
   //selected: day => DateUtils.isSameDay(this.state.from, day),
   selected:day => DateUtils.isDayInRange(day, this.state)
 };

 return <DayPicker selected={this.state.startDate} enableOutsideDays modifiers={ modifiers } onDayClick={ this.handleChange }  minDate={moment()}  maxDate={moment().add(5, 'days')}
  placeholderText="Select a date between today and 5 days in the future" />;
 }
}

【问题讨论】:

  • 你不使用handleDayClick()?

标签: reactjs datepicker momentjs react-day-picker


【解决方案1】:

终于解决了。必须正确使用矩js。

import React from "react";
import moment from 'moment';
import DayPicker from "./DayPicker";
import DateUtils from "./DateUtils";
export default class DisabledDays extends React.Component {
  state = {
    from: null,
    to:null,
  };
  handleDayClick(e, day, modifiers) {
    var target = moment(day).add(6, 'day')._d;
    this.state.to=target
    this.state.from=day
    console.log(this.state)
    this.setState(this.state);
  }
  render() {
    const { from, to} = this.state;
    console.log(from+"-"+to)
    const modifiers = {
      selected:day => DateUtils.isDayInRange(day, {from:from,to:to})
    };
    return <DayPicker  enableOutsideDays modifiers={ modifiers } onDayClick={ this.handleDayClick.bind(this) }  minDate={moment()}  maxDate={moment().add(5, 'days')}
      placeholderText="Select a date between today and 5 days in the future" />;
  }
}

【讨论】:

    【解决方案2】:

    我有一些东西可以使用你的 handleDayClick()

    import React from "react";
    import moment from 'moment';
    import DayPicker, {DateUtils} from "react-day-picker";
    
    import "react-day-picker/lib/style.css";
    
    export default class DisabledDays extends React.Component {
    
      state = {
        from: null,
        to: null,
      };
    
      handleDayClick = (e, day, modifiers) => {
        const range = DateUtils.addDayToRange(day, this.state);
        this.setState(range);
      }
    
      handleChange = (day) => {
        console.log("newDate", day);
        return this.setState({date: day});
      }
    
      render() {
        const {from, to} = this.state;
        // Add the `selected` modifier to the cell of the clicked day
        const modifiers = {
          //disabled: DateUtils.isPastDay,
          //selected: day => DateUtils.isSameDay(this.state.from, day),
          selected: day => DateUtils.isDayInRange(day, this.state)
        };
    
        return <DayPicker selected={this.state.startDate} enableOutsideDays modifiers={ modifiers }
                          onDayClick={ this.handleDayClick } minDate={moment()} maxDate={moment().add(5, 'days')}
                          placeholderText="Select a date between today and 5 days in the future"/>;
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2020-10-12
      • 2021-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多