Skip to content

Commit 58a1f3b

Browse files
authored
fix(calendarcard): 修复受控模式 (jdf2e#2063)
* fix(calendarcard): 修复受控模式 * fix(calendarcard): 修复受控模式
1 parent e343e95 commit 58a1f3b

File tree

2 files changed

+14
-24
lines changed

2 files changed

+14
-24
lines changed

src/packages/calendarcard/calendarcard.taro.tsx

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import {
1111
} from './utils'
1212
import { useConfig } from '@/packages/configprovider/configprovider.taro'
1313
import { CalendarCardDay, CalendarCardMonth, CalendarCardValue } from './types'
14+
import { usePropsValue } from '@/utils/use-props-value'
1415

1516
export interface CalendarCardProps extends BasicComponent {
1617
// 日视图-选择一个日期 | 日视图-选择多个日期 | 日视图-选择范围 | 周视图-选择某一周
@@ -102,20 +103,14 @@ export const CalendarCard = React.forwardRef<
102103
return range ? [convertDayToDate(range)] : []
103104
}
104105

105-
const [innerValue, setInnerValue] = useState<CalendarCardDay[]>(() => {
106-
const val = (
107-
value || defaultValue ? valueToRange(value || defaultValue) : []
108-
) as CalendarCardDay[]
109-
return val
106+
const [innerValue, setInnerValue] = usePropsValue<CalendarCardDay[]>({
107+
value: value ? (valueToRange(value) as CalendarCardDay[]) : undefined,
108+
defaultValue: defaultValue
109+
? (valueToRange(defaultValue) as CalendarCardDay[])
110+
: undefined,
111+
finalValue: [],
110112
})
111113

112-
useEffect(() => {
113-
const val = (
114-
value || defaultValue ? valueToRange(value || defaultValue) : []
115-
) as CalendarCardDay[]
116-
setInnerValue(val)
117-
}, [value])
118-
119114
const change = (v: CalendarCardDay[]) => {
120115
setInnerValue(v)
121116
if (type === 'single') {

src/packages/calendarcard/calendarcard.tsx

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import {
1111
} from './utils'
1212
import { useConfig } from '@/packages/configprovider/configprovider'
1313
import { CalendarCardDay, CalendarCardMonth, CalendarCardValue } from './types'
14+
import { usePropsValue } from '@/utils/use-props-value'
1415

1516
export interface CalendarCardProps extends BasicComponent {
1617
// 日视图-选择一个日期 | 日视图-选择多个日期 | 日视图-选择范围 | 周视图-选择某一周
@@ -102,20 +103,14 @@ export const CalendarCard = React.forwardRef<
102103
return range ? [convertDayToDate(range)] : []
103104
}
104105

105-
const [innerValue, setInnerValue] = useState<CalendarCardDay[]>(() => {
106-
const val = (
107-
value || defaultValue ? valueToRange(value || defaultValue) : []
108-
) as CalendarCardDay[]
109-
return val
106+
const [innerValue, setInnerValue] = usePropsValue<CalendarCardDay[]>({
107+
value: value ? (valueToRange(value) as CalendarCardDay[]) : undefined,
108+
defaultValue: defaultValue
109+
? (valueToRange(defaultValue) as CalendarCardDay[])
110+
: undefined,
111+
finalValue: [],
110112
})
111113

112-
useEffect(() => {
113-
const val = (
114-
value || defaultValue ? valueToRange(value || defaultValue) : []
115-
) as CalendarCardDay[]
116-
setInnerValue(val)
117-
}, [value])
118-
119114
const change = (v: CalendarCardDay[]) => {
120115
setInnerValue(v)
121116
if (type === 'single') {

0 commit comments

Comments
 (0)