自定义日期单元格

使用 Day 组件的 render prop来自定义每个日期单元格。这对于添加事件指示器、根据日期属性应用自定义样式或完全替换日期渲染非常有用。

import { useState } from "react";
import { DatePicker } from "react-date-range-picker-tailwind3";
const eventDates = new Set([5, 12, 18, 25]);
function CompoundCustomDay() {
const [value, setValue] = useState<Date | null>(null);
return (
<DatePicker.Root value={value} onChange={setValue} inline>
<DatePicker.Content>
<DatePicker.Header>
<DatePicker.PrevButton />
<DatePicker.Title />
<DatePicker.NextButton />
</DatePicker.Header>
<DatePicker.Grid>
{({ date }) => (
<DatePicker.Day date={date}>
{({ day, isDisabled, isSelected, isToday, onClick, onMouseEnter, onMouseLeave }) => (
<button
type="button"
onClick={onClick}
onMouseEnter={onMouseEnter}
onMouseLeave={onMouseLeave}
disabled={isDisabled}
style={{
display: "flex",
flexDirection: "column",
alignItems: "center",
justifyContent: "center",
width: 36,
height: 36,
border: "none",
borderRadius: 6,
cursor: isDisabled ? "default" : "pointer",
background: isSelected ? "#3b82f6" : "transparent",
color: isSelected ? "#fff" : isToday ? "#2563eb" : undefined,
fontWeight: isToday || isSelected ? 600 : 400,
fontSize: 13,
position: "relative",
}}
>
{day}
{eventDates.has(date.getDate()) && (
<span
style={{
position: "absolute",
bottom: 2,
width: 4,
height: 4,
borderRadius: "50%",
background: isSelected ? "#fff" : "#f59e0b",
}}
/>
)}
</button>
)}
</DatePicker.Day>
)}
</DatePicker.Grid>
</DatePicker.Content>
</DatePicker.Root>
);
}
March 2026
Su
Mo
Tu
We
Th
Fr
Sa

Day 渲染属性

属性类型描述
dateDate日期对象
daynumber月份中的第几天 (1-31)
isTodayboolean是否为今天
isSelectedboolean此日期是否被选中
isDisabledboolean此日期是否被禁用
isInRangeboolean此日期是否在选定范围内
isRangeStartboolean是否为范围的起始点
isRangeEndboolean是否为范围的结束点
isInHoverRangeboolean此日期是否在悬停预览范围内
isHoverTargetboolean是否为悬停的终点
isOutsideDayboolean此日期是否属于相邻月份
isHighlightedboolean此日期是否有一个高亮圆点
isFocusedboolean此日期是否具有键盘焦点
onClick() => void点击处理程序
onMouseEnter() => void鼠标进入处理程序
onMouseLeave() => void鼠标离开处理程序