From 8f408f90500c648da6b152263908daae40b0ed02 Mon Sep 17 00:00:00 2001 From: janlay Date: Wed, 22 Sep 2021 09:58:37 +0800 Subject: [PATCH] fix: optimization calendar render performance --- src/components/calendar/calendar.tsx | 3 ++- src/helpers/date-helper.ts | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/components/calendar/calendar.tsx b/src/components/calendar/calendar.tsx index bb30ebd..aa40dd9 100644 --- a/src/components/calendar/calendar.tsx +++ b/src/components/calendar/calendar.tsx @@ -2,6 +2,7 @@ import React, { ReactChild } from "react"; import { ViewMode } from "../../types/public-types"; import { TopPartOfCalendar } from "./top-part-of-calendar"; import { + getCachedDateTimeFormat, getDaysInMonth, getLocaleMonth, getWeekNumberISO8601, @@ -177,7 +178,7 @@ export const Calendar: React.FC = ({ const dates = dateSetup.dates; for (let i = 0; i < dates.length; i++) { const date = dates[i]; - const bottomValue = Intl.DateTimeFormat(locale, { + const bottomValue = getCachedDateTimeFormat(locale, { hour: "numeric", }).format(date); diff --git a/src/helpers/date-helper.ts b/src/helpers/date-helper.ts index a966242..0938f98 100644 --- a/src/helpers/date-helper.ts +++ b/src/helpers/date-helper.ts @@ -12,7 +12,7 @@ type DateHelperScales = | "millisecond"; const intlDTCache = {}; -const getCachedDateTimeFormat = (locString: string | string[], opts: DateTimeFormatOptions = {}): DateTimeFormat => { +export const getCachedDateTimeFormat = (locString: string | string[], opts: DateTimeFormatOptions = {}): DateTimeFormat => { const key = JSON.stringify([locString, opts]); let dtf = intlDTCache[key]; if (!dtf) {