react使用Fullcalendar

前言:

最近在做项目时,遇到了需要用日历的项目。一开始考虑使用antd的日历组件。后来 调研技术库,发现了fullcalendar 库。经过对比 fullcalendar 更强大,更灵活。
在这里插入图片描述

其实 antd的日历组件 也不错,简单的需求用他也行。antd 的优点是文档清晰且完善。

安装需要的包:

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

npm @fullcalendar/react 官网

Fullcalendar 官网
Fullcalendar 官网 react

用法:

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

const events = [
  { title: 'Meeting', start: new Date() }
]

export function DemoApp() {
  return (
    <div>
      <h1>Demo App</h1>
      <FullCalendar
        plugins={[dayGridPlugin]}
        initialView='dayGridMonth'
        weekends={false}
        events={events}
        eventContent={renderEventContent}
      />
    </div>
  )
}

// a custom render function
function renderEventContent(eventInfo) {
  return (
    <>
      <b>{eventInfo.timeText}</b>
      <i>{eventInfo.event.title}</i>
    </>
  )
}

效果图:
效果图
有什么问题可以查看文档:
fullcalendar 文档

使用心得:

文档查看:

因为文档是英文的,我的英文不好,只能借助 一些插件来翻译。建议使用edge浏览器来看。之前都是用 浏览器自带的翻译功能,但是 会直接把英文换成中文。很不友好,无法对照着来。
在这里插入图片描述
后来发现了一个 插件很好用:沉浸式翻译对的插件(沉浸式翻译插件地址
这个直接在插件商店搜素就行,如果想在chrome上用就得科学上网或者看看这篇文章:
immersive-translate(沉浸式双语网页翻译扩展),解决谷歌翻译无法使用问题
翻以前:
翻以前截图

翻译后截图

自定义样式:

1.可以审查元素 强行覆盖其样式

.fc-daygrid-event {
  background-color: #4CAF50; /* 自定义事件背景色 */
  border-radius: 4px; /* 圆角 */
  color: white; /* 事件文本颜色 */
  padding: 5px; /* 内间距 */
}

2.fullcalendar/react 使用了 css 变量,可以用css变量来控制一些样式,甚至可以定制一个简易的主题。
一些 简单的 css变量
例如:边框颜色:–fc-border-color这个变量控制的,只需要在css/less/scss里加上:

--fc-border-color:red;
 --fc-today-bg-color:red; //选中的背景色

3.用fullcalenda 提供的主题系统
fullcalenda Theme

小结:我觉得 修改样式可以 配合 css变量和 找到其类名进行覆盖比较好(个人观点)。

不显示 周日、周六列

weekends=false 

设置语言:

设置成这个就显示成 周一 至 周五 默认就是 英文

 locale='zh-cn'// 设置语言

标题不想 要周字(我的需求),自定义dayHeaderContent

dayHeaderContent={(arg) => {
   // 自定义星期内容
   const days = ['日', '一','二', '三', '四', '五', '六']; // 星期的中文表示
   return days[arg.date.getDay()]; // 获取对应星期的中文名称
}}

自定义单元格内容:

dayCellContent={(data)=>{return "xx"}}

单元格点击dateClick(需要引入交互插件):

只加dateClick

 dateClick={(info) => {
                    console.log(info, "9086");
                }}

不管用还需要给plugins里加上interactionPlugin,这个是交互插件。最好把selectable={true}也加上

import interactionPlugin from "@fullcalendar/interaction"
plugins={[dayGridPlugin,interactionPlugin]}
selectable={true}

dateClick 文档

实战用法:

具体可参考:react使用Fullcalendar 实战用法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

崽崽的谷雨

漫漫前端路,摸爬滚打

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值