当前位置: 首页 > article >正文

react使用Fullcalendar

前言:

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

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

安装需要的包:

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

npm @fullcalendar/react 官网

Fullcalendar 官网

用法:

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 实战用法


http://www.kler.cn/a/378345.html

相关文章:

  • PHP常量
  • 个人对Numpy中transpose()函数的理解
  • 电通旗下VeryStar连摘Campaign 亚太科技MVP及鼎革奖两项大奖
  • L0G1000:Linux+InternStudio 闯关作业
  • 基于python的机器学习(一)—— 基础知识(Scikit-learn安装)
  • Java项目实战II基于Spring Boot的文理医院预约挂号系统的设计与实现(开发文档+数据库+源码)
  • 在 openEuler 22.03 服务器上搭建 web 服务教程
  • 2024年11月3日练习(滑动窗口算法)
  • AlDente Pro - MacBook 电池健康管理工具
  • JAVA 插入 JSON 对象到 PostgreSQL
  • 推荐一款用来快速开发3D建筑模型软件:Allplan
  • 【刷题14】哈希表专题
  • OpenAI 的 Whisper:盛名之下,其实难副?
  • ROS2入门学习——ROS在机器人中的运行
  • C++:哈希表
  • 浅谈路由器
  • 前端路由如何从0开始配置?vue-router 的使用
  • 力扣算法笔记 —— 等差数列
  • Android——动态注册广播
  • 15.useIntersectionObserver
  • 微信小程序的上拉刷新与下拉刷新
  • PyQt入门指南三十五 QAction动作组件
  • 界面控件Kendo UI for Angular 2024 Q3亮点 - 全新的页面模板
  • Spring Boot框架下的信息学科平台实现策略
  • 响应式网页设计案例
  • 桑基图在医学数据分析中的更复杂应用示例