From 02d2e653e28d14d3fb023f8f1597be67150dc145 Mon Sep 17 00:00:00 2001 From: hanyuxinting Date: Thu, 26 Jun 2025 18:28:27 +0800 Subject: [PATCH] =?UTF-8?q?feat(calendarcard):=20=E5=AF=B9=E5=87=BD?= =?UTF-8?q?=E6=95=B0=E5=81=9A=E4=BA=86=E4=BC=98=E5=8C=96=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/packages/calendarcard/calendarcard.taro.tsx | 12 ++++++++---- src/packages/calendarcard/calendarcard.tsx | 12 +++++++++--- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/src/packages/calendarcard/calendarcard.taro.tsx b/src/packages/calendarcard/calendarcard.taro.tsx index 450ae5bc10..a846e917bc 100644 --- a/src/packages/calendarcard/calendarcard.taro.tsx +++ b/src/packages/calendarcard/calendarcard.taro.tsx @@ -1,4 +1,4 @@ -import React, { useCallback, useEffect, useState } from 'react' +import React, { useCallback, useEffect, useState, useRef } from 'react' import classNames from 'classnames' import { View } from '@tarojs/components' import { ArrowLeft, ArrowRight, DoubleLeft, DoubleRight } from './icon.taro' @@ -50,7 +50,7 @@ export const CalendarCard = React.forwardRef< onPageChange, onChange, } = { ...defaultProps, ...props } - + const onPageChangeRef = useRef(onPageChange) // 当前月份信息 const [month, setMonth] = useState(() => { let date = new Date(Date.now()) @@ -133,11 +133,15 @@ export const CalendarCard = React.forwardRef< [firstDayOfWeek] ) + useEffect(() => { + onPageChangeRef.current = onPageChange + }, [onPageChange]) + useEffect(() => { const newDays = getDays(month) setDays(newDays) - onPageChange?.(month) - }, [month, getDays, onPageChange, firstDayOfWeek]) + onPageChangeRef.current?.(month) + }, [month, getDays, firstDayOfWeek]) const isSameDay = (day1: CalendarCardDay, day2: CalendarCardDay) => { return ( diff --git a/src/packages/calendarcard/calendarcard.tsx b/src/packages/calendarcard/calendarcard.tsx index 904a69f522..62a4f71e5a 100644 --- a/src/packages/calendarcard/calendarcard.tsx +++ b/src/packages/calendarcard/calendarcard.tsx @@ -1,4 +1,4 @@ -import React, { useCallback, useEffect, useState } from 'react' +import React, { useCallback, useEffect, useState, useRef } from 'react' import classNames from 'classnames' import { ArrowLeft, ArrowRight, DoubleLeft, DoubleRight } from './icon' import { ComponentDefaults } from '@/utils/typings' @@ -50,6 +50,8 @@ export const CalendarCard = React.forwardRef< onChange, } = { ...defaultProps, ...props } + const onPageChangeRef = useRef(onPageChange) + // 当前月份信息 const [month, setMonth] = useState(() => { let date = new Date(Date.now()) @@ -132,11 +134,15 @@ export const CalendarCard = React.forwardRef< [firstDayOfWeek] ) + useEffect(() => { + onPageChangeRef.current = onPageChange + }, [onPageChange]) + useEffect(() => { const newDays = getDays(month) setDays(newDays) - onPageChange?.(month) - }, [month, getDays, onPageChange, firstDayOfWeek]) + onPageChangeRef.current?.(month) + }, [month, getDays, firstDayOfWeek]) const isSameDay = (day1: CalendarCardDay, day2: CalendarCardDay) => { return (