react-calendar日历的简单使用

最近遇到一个新的需求,是要求展示一个日历,而且每天都要显示当天的一个排班班次,UI给我的图就十分类似于钉钉的考勤日历,十分的美观。首先那肯定是找一个插件来改,挑来挑去,我最后选中了react-calendar这款功能强大的日历组件。
需求:
我司对于高保真的要求十分低,基本上只要功能实现,页面不丑,就OK,所以我最后组件的样式不能说是和设计图一模一样,可以说是毫不相干嗷。需求也很简单如下:

  1. 能够在日历上展示每天对应的班次;
  2. 班次不同,日期样式不同(颜色不一致);
  3. 可以查看不同月份的班次情况以及点击某一天显示对应的班次时间。

我封装的Calendar组件如下:

import React, { PureComponent } from 'react';
import Calendar from 'react-calendar';
import 'react-calendar/dist/Calendar.css';

export default class MyCalendar extends PureComponent {
    render() {
        const { value, onChange, className, ...rest,} = this.props;
        return (
        <div>
            <Calendar
                className={className}
                onChange={onChange}
                value={value}
                {...rest}
            />
        </div>
    );
    }
}

官方文档上的demo是用hooks写的,但我还是用的类组件,因为移动端react版本太低了只有16.2,我还战战兢兢地升到了16.3,小tips:这个日历组件是建议大家在react16.3之后使用的哦。
主要用到了三个方法:

<MyCalendar
    className={styles.MyCalendar}
     value={this.state.date}
     onChange={this.onChange}
     onClickDay={this.onClickDay}
     tileClassName={this.tileClassName}
     tileContent={this.tileContent}
 />
// 初始化date
this.state = {date: new Date()} 
onChange = (value) => {this.setState({date: value})} 
// 点击日历上的某天
onClickDay = (value, event) => alert('Clicked day: ', value)
// 将应用于给定日历项(月日视图、年月视图等等)的类名。
tileClassName="aa bb cc"(给按钮 增加类名 可以是 String: "class1 class2" 或者给一个数组 Array of strings: ["class1", "class2 class3"] ,可以是function : Function: ({ date, view }) => view === 'month' && date.getDay() === 3 ? 'wednesday' : null)
// 在每一个格中显示的内容
tileContent={this.tileContent}
1.String: "Sample"
2.React element: <TileContent />
3.Function: ({ activeStartDate, date, view }) => view === 'month' && date.getDay() === 0 ? <p>It's Sunday!</p> : null

最后给大家看看我做出来的亚子:
在这里插入图片描述
再给大家看看UI的图:
在这里插入图片描述
最后我的项目经理还和我说,比我想象的好多了,没有那么丑,那行,那我就不优化样式了嘻嘻嘻。
插件的简单介绍

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值