首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >React-big-calendar仅显示当月和下月

React-big-calendar仅显示当月和下月
EN

Stack Overflow用户
提问于 2017-08-09 04:58:06
回答 2查看 5.1K关注 0票数 2

如何使用react大日历只显示当前月份和下个月,并使其每天动态变化?

我有一个看起来像这样的组件:

代码语言:javascript
复制
import React, {Component} from 'react';
import 'react-big-calendar/lib/css/react-big-calendar.css'
import BigCalendar from 'react-big-calendar';
import moment from 'moment';
import 'moment/locale/pl';


class NewCalendar extends Component {
    constructor(props, context) {
        super(props, context);
        BigCalendar.momentLocalizer(moment);

    }

    render() {
        return (
            <div {...this.props}>
                <BigCalendar
                    messages={{next: "Następny", previous: "Poprzedni", today: "Dzisiaj", month: "Miesiąc", week: "Tydzień"}}
                    culture='pl-PL'
                    timeslots={1}
                    events={[]}
                    views={['month', 'week', 'day']}
                    min={new Date('2017, 1, 7, 08:00')}
                    max={new Date('2017, 1, 7, 20:00')}
                />
            </div>
        );
    }
}
export default NewCalendar;

但是它只显示从早上8点到晚上8点的最小和最大小时数,如何将最大和最小小时数设置为天?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-01-02 14:23:20

我做了一些研究,在这里找到了一些关于黑客攻击的灵感:似乎没有像minDatemaxDate这样现成的东西。但是有一个名为date的属性,它是JS Date()的一个实例。date决定可见的日历范围。还有一个名为onNavigatefunction类型的道具。因此,您应该确保您的状态有一个初始键-值对,如下所示:

代码语言:javascript
复制
{
    dayChosen: new Date() //just initalize as current moment
}

然后,作为MyCalendar组件的两个道具,您可以这样写:

代码语言:javascript
复制
date={this.state.dayChosen}

onNavigate={(focusDate, flipUnit, prevOrNext) => {
    console.log("what are the 3 params focusDate, flipUnit, prevOrNext ?", focusDate, flipUnit, prevOrNext);


const _this = this;

const now = new Date();
const nowNum = now.getDate();
const nextWeekToday = moment().add(7, "day").toDate();
//I imported `moment.js` earlier

const nextWeekTodayNum = nextWeekToday.getDate();

  if (prevOrNext === "NEXT" 
      && _this.state.dayChosen.getDate() === nowNum){
        _this.setState({
          dayChosen: nextWeekToday
        });
  } else if (prevOrNext === "PREV" 
  && _this.state.dayChosen.getDate() === nextWeekTodayNum){
    _this.setState({
      dayChosen: now
    });
  }
}}

在我的示例中,用户可以单击按钮backnext,但我已经成功地将日历限制为只显示this weekthe following week。用户无法查看previous weeksmore than 1 week down the road。如果你想要monthly restriction而不是weekly,你可以很容易地改变逻辑。

票数 4
EN

Stack Overflow用户

发布于 2017-11-10 15:01:08

我不太明白你的整个问题。

但是,如果您想隐藏当前月份之外的日期,您可以使用css来实现

代码语言:javascript
复制
.rbc-off-range {
    /* color: #999999; */
    color: transparent;
    pointer-events: none;
}

请参阅附件。

如果你想动态显示日期,只需传入一个日期,这是一个javascript日期字符串。

代码语言:javascript
复制
<BigCalendar
  {...allYourProps}
  date={new Date('9-8-1990')
        /*evaluates to 'Sat Sep 08 1990 00:00:00 GMT-0400 (EDT)'*/
       }
/>

enter image description here

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45577913

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档