美文网首页
React dva项目 日程/日历插件 FullCalendar

React dva项目 日程/日历插件 FullCalendar

作者: Sasoli | 来源:发表于2019-12-03 21:16 被阅读0次

整理不易,转载请注明出处!!!

网上大多是在JQuery中使用FullCalendar,很多API使用的例子不清晰,记录一下本人在React中使用到的方法
官网地址:https://fullcalendar.io/docs#toc

按官网文档说明,首先安装相关依赖

npm install --save @fullcalendar/react @fullcalendar/core @fullcalendar/daygrid

先粘贴一个本人习惯的项目构建模板代码

import React, { Component } from 'react';
import { connect } from 'dva';
import styles from './index.less';

class CalendarDemo extends Component {
  constructor(props) {
    super(props);
    this.state = {

    };
  }

  render() {
    return (
      <div className={styles.container}>

      </div>
    );
  }
}

const mapStateToProps = state => {
  return {

  }
}

export default connect(mapStateToProps)(CalendarDemo);

然后一个最简单的使用方式

import React, { Component } from 'react';
import { connect } from 'dva';

import FullCalendar from '@fullcalendar/react';
import dayGridPlugin from '@fullcalendar/daygrid';

import styles from './index.less';

// 必须引入的样式文件
import "@fullcalendar/core/main.css";
import "@fullcalendar/daygrid/main.css";

class CalendarDemo extends Component {
  constructor(props) {
    super(props);
    this.state = {

    };
  }

  render() {
    return (
      <div className={styles.container}>
        <FullCalendar
          height={500} // 此处高度为方便截图,可不设置
          defaultView="dayGridMonth"
          plugins={[dayGridPlugin]}
        />
      </div>
    );
  }
}

const mapStateToProps = state => {
  return {

  }
}

export default connect(mapStateToProps)(CalendarDemo);
此时样式为 截屏2019-12-0320.47.47.png

然后我这里需求是需要月周天视图
所以继续安装一个插件

npm i @fullcalendar/timegrid

代码如下

import React, { Component } from 'react';
import { connect } from 'dva';

import FullCalendar from '@fullcalendar/react';
import dayGridPlugin from '@fullcalendar/daygrid';
import timeGridPlugin from "@fullcalendar/timegrid";

import styles from './index.less';

import "@fullcalendar/core/main.css";
import "@fullcalendar/daygrid/main.css";
import "@fullcalendar/timegrid/main.css";

class CalendarDemo extends Component {
  constructor(props) {
    super(props);
    this.state = {

    };
  }

  render() {
    return (
      <div className={styles.container}>
        <FullCalendar
          height={500} // 此处高度为方便截图,可不设置
          defaultView="dayGridMonth"
          plugins={[dayGridPlugin, timeGridPlugin]}
          header={{
            left: "prevYear,prev,next,nextYear today", // 上一年,上一月,下一月,下一年 今天
            center: "title", // 当前年月
            right: "dayGridMonth,timeGridWeek,timeGridDay" // 月 周 天
          }}
        />
      </div>
    );
  }
}

const mapStateToProps = state => {
  return {

  }
}

export default connect(mapStateToProps)(CalendarDemo);

此时样式如下图:


截屏2019-12-0320.57.53.png

到此主体内容基本完成,后续代码为单独部分

我们是中国人,所以当然先来汉化一下,什么都不用引入了,直接加属性即可

        <FullCalendar
          height={500} // 此处高度为方便截图,可不设置
          defaultView="dayGridMonth"
          plugins={[dayGridPlugin, timeGridPlugin]}
          header={{
            left: "prevYear,prev,next,nextYear today", // 上一年,上一月,下一月,下一年 今天
            center: "title", // 当前年月
            right: "dayGridMonth,timeGridWeek,timeGridDay" // 月 周 天
          }}
          locale='zh-cn'
        />
此时各窗口样式如下图 截屏2019-12-0321.01.57.png
截屏2019-12-0321.02.07.png
截屏2019-12-0321.02.16.png

我们继续使用属性使其汉化完全

        <FullCalendar
          height={500} // 此处高度为方便截图,可不设置
          defaultView="dayGridMonth"
          plugins={[dayGridPlugin, timeGridPlugin]}
          header={{
            left: "prevYear,prev,next,nextYear today", // 上一年,上一月,下一月,下一年 今天
            center: "title", // 当前年月
            right: "dayGridMonth,timeGridWeek,timeGridDay" // 月 周 天
          }}
          locale='zh-cn'
          buttonText={{
            today: '今天',
            month: '月',
            week: '周',
            day: '天'
          }}
          allDayText='全天'
        />
截屏2019-12-0321.05.42.png
截屏2019-12-0321.06.31.png

然后我本人不是很喜欢周日为一周开始
继续加属性

        <FullCalendar
          height={500} // 此处高度为方便截图,可不设置
          defaultView="dayGridMonth"
          plugins={[dayGridPlugin, timeGridPlugin]}
          header={{
            left: "prevYear,prev,next,nextYear today", // 上一年,上一月,下一月,下一年 今天
            center: "title", // 当前年月
            right: "dayGridMonth,timeGridWeek,timeGridDay" // 月 周 天
          }}
          locale='zh-cn'
          buttonText={{
            today: '今天',
            month: '月',
            week: '周',
            day: '天'
          }}
          allDayText='全天'
          firstDay={1} // 周一至周六为1~6,周日为0,喜欢周几开始就填几
        />

也不喜欢上午X时这种表现方式

        <FullCalendar
          height={500} // 此处高度为方便截图,可不设置
          defaultView="dayGridMonth"
          plugins={[dayGridPlugin, timeGridPlugin]}
          header={{
            left: "prevYear,prev,next,nextYear today", // 上一年,上一月,下一月,下一年 今天
            center: "title", // 当前年月
            right: "dayGridMonth,timeGridWeek,timeGridDay" // 月 周 天
          }}
          locale='zh-cn'
          buttonText={{
            today: '今天',
            month: '月',
            week: '周',
            day: '天'
          }}
          allDayText='全天'
          firstDay={1}
          slotLabelFormat={{
            hour: '2-digit',
            minute: '2-digit',
            meridiem: false,
            hour12: false
          }}
        />

此时样式如下图

截屏2019-12-0321.09.19.png
到此为止样式方面基本改造完毕,下篇文章我们添加一些日程
https://www.jianshu.com/p/a499348ffe5a

相关文章

网友评论

      本文标题:React dva项目 日程/日历插件 FullCalendar

      本文链接:https://www.haomeiwen.com/subject/fzjhgctx.html