Skip to content

Commit e1faac3

Browse files
authored
feat(calendarcard): 对函数做了优化处理 (#3284)
1 parent 5b7eb80 commit e1faac3

File tree

2 files changed

+17
-7
lines changed

2 files changed

+17
-7
lines changed

src/packages/calendarcard/calendarcard.taro.tsx

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React, { useCallback, useEffect, useState } from 'react'
1+
import React, { useCallback, useEffect, useState, useRef } from 'react'
22
import classNames from 'classnames'
33
import { View } from '@tarojs/components'
44
import { ArrowLeft, ArrowRight, DoubleLeft, DoubleRight } from './icon.taro'
@@ -50,7 +50,7 @@ export const CalendarCard = React.forwardRef<
5050
onPageChange,
5151
onChange,
5252
} = { ...defaultProps, ...props }
53-
53+
const onPageChangeRef = useRef(onPageChange)
5454
// 当前月份信息
5555
const [month, setMonth] = useState<CalendarCardMonth>(() => {
5656
let date = new Date(Date.now())
@@ -133,11 +133,15 @@ export const CalendarCard = React.forwardRef<
133133
[firstDayOfWeek]
134134
)
135135

136+
useEffect(() => {
137+
onPageChangeRef.current = onPageChange
138+
}, [onPageChange])
139+
136140
useEffect(() => {
137141
const newDays = getDays(month)
138142
setDays(newDays)
139-
onPageChange?.(month)
140-
}, [month, getDays, onPageChange, firstDayOfWeek])
143+
onPageChangeRef.current?.(month)
144+
}, [month, getDays, firstDayOfWeek])
141145

142146
const isSameDay = (day1: CalendarCardDay, day2: CalendarCardDay) => {
143147
return (

src/packages/calendarcard/calendarcard.tsx

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React, { useCallback, useEffect, useState } from 'react'
1+
import React, { useCallback, useEffect, useState, useRef } from 'react'
22
import classNames from 'classnames'
33
import { ArrowLeft, ArrowRight, DoubleLeft, DoubleRight } from './icon'
44
import { ComponentDefaults } from '@/utils/typings'
@@ -50,6 +50,8 @@ export const CalendarCard = React.forwardRef<
5050
onChange,
5151
} = { ...defaultProps, ...props }
5252

53+
const onPageChangeRef = useRef(onPageChange)
54+
5355
// 当前月份信息
5456
const [month, setMonth] = useState<CalendarCardMonth>(() => {
5557
let date = new Date(Date.now())
@@ -132,11 +134,15 @@ export const CalendarCard = React.forwardRef<
132134
[firstDayOfWeek]
133135
)
134136

137+
useEffect(() => {
138+
onPageChangeRef.current = onPageChange
139+
}, [onPageChange])
140+
135141
useEffect(() => {
136142
const newDays = getDays(month)
137143
setDays(newDays)
138-
onPageChange?.(month)
139-
}, [month, getDays, onPageChange, firstDayOfWeek])
144+
onPageChangeRef.current?.(month)
145+
}, [month, getDays, firstDayOfWeek])
140146

141147
const isSameDay = (day1: CalendarCardDay, day2: CalendarCardDay) => {
142148
return (

0 commit comments

Comments
 (0)