Skip to content

Commit 50b7e6e

Browse files
author
刘欢
committed
refactor: Upgrade utils and replace useMergedState
1 parent 95da35c commit 50b7e6e

File tree

6 files changed

+20
-30
lines changed

6 files changed

+20
-30
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
"dependencies": {
4242
"@rc-component/resize-observer": "^1.0.0",
4343
"@rc-component/trigger": "^3.0.0",
44-
"@rc-component/util": "^1.2.1",
44+
"@rc-component/util": "^1.3.0",
4545
"classnames": "^2.2.1",
4646
"rc-overflow": "^1.3.2"
4747
},

src/PickerInput/RangePicker.tsx

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { useEvent, useMergedState } from '@rc-component/util';
1+
import { useEvent, useControlledState } from '@rc-component/util';
22
import cls from 'classnames';
33
import useLayoutEffect from '@rc-component/util/lib/hooks/useLayoutEffect';
44
import omit from '@rc-component/util/lib/omit';
@@ -310,9 +310,7 @@ function RangePicker<DateType extends object = any>(
310310
}, [showTime, activeIndex, calendarValue, activeIndexList]);
311311

312312
// ========================= Mode =========================
313-
const [modes, setModes] = useMergedState<[PanelMode, PanelMode]>([picker, picker], {
314-
value: mode,
315-
});
313+
const [modes, setModes] = useControlledState<[PanelMode, PanelMode]>([picker, picker], mode);
316314

317315
const mergedMode = modes[activeIndex] || picker;
318316

src/PickerInput/SinglePicker.tsx

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { useEvent, useMergedState } from '@rc-component/util';
1+
import { useEvent, useControlledState } from '@rc-component/util';
22
import cls from 'classnames';
33
import useLayoutEffect from '@rc-component/util/lib/hooks/useLayoutEffect';
44
import omit from '@rc-component/util/lib/omit';
@@ -259,9 +259,7 @@ function Picker<DateType extends object = any>(
259259
};
260260

261261
// ========================= Mode =========================
262-
const [mergedMode, setMode] = useMergedState(picker, {
263-
value: mode,
264-
});
262+
const [mergedMode, setMode] = useControlledState(picker, mode);
265263

266264
/** Extends from `mergedMode` to patch `datetime` mode */
267265
const internalMode: InternalMode = mergedMode === 'date' && showTime ? 'datetime' : mergedMode;

src/PickerInput/hooks/useRangePickerValue.ts

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { useMergedState } from '@rc-component/util';
1+
import { useControlledState } from '@rc-component/util';
22
import useLayoutEffect from '@rc-component/util/lib/hooks/useLayoutEffect';
33
import * as React from 'react';
44
import type { GenerateConfig } from '../../generate';
@@ -72,14 +72,15 @@ export default function useRangePickerValue<DateType extends object, ValueType e
7272
const [startPickerValue, endPickerValue] = pickerValue;
7373

7474
// PickerValue state
75-
const [mergedStartPickerValue, setStartPickerValue] = useMergedState(
76-
() => getDefaultPickerValue(0),
77-
{ value: startPickerValue },
75+
const [mergedStartPickerValue, setStartPickerValue] = useControlledState(
76+
getDefaultPickerValue(0),
77+
startPickerValue,
7878
);
7979

80-
const [mergedEndPickerValue, setEndPickerValue] = useMergedState(() => getDefaultPickerValue(1), {
81-
value: endPickerValue,
82-
});
80+
const [mergedEndPickerValue, setEndPickerValue] = useControlledState(
81+
getDefaultPickerValue(1),
82+
endPickerValue,
83+
);
8384

8485
// Current PickerValue
8586
const currentPickerValue = React.useMemo(() => {

src/PickerInput/hooks/useRangeValue.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { useEvent, useMergedState } from '@rc-component/util';
1+
import { useEvent, useControlledState } from '@rc-component/util';
22
import * as React from 'react';
33
import type { GenerateConfig } from '../../generate';
44
import useSyncState from '../../hooks/useSyncState';
@@ -117,7 +117,7 @@ export function useInnerValue<ValueType extends DateType[], DateType extends obj
117117
onOk?: (dates: ValueType) => void,
118118
) {
119119
// This is the root value which will sync with controlled or uncontrolled value
120-
const [innerValue, setInnerValue] = useMergedState(defaultValue, { value });
120+
const [innerValue, setInnerValue] = useControlledState(defaultValue, value);
121121
const mergedValue = innerValue || (EMPTY_VALUE as ValueType);
122122

123123
// ========================= Inner Values =========================

src/PickerPanel/index.tsx

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import classNames from 'classnames';
2-
import { useEvent, useMergedState, warning } from '@rc-component/util';
2+
import { useEvent, useControlledState, warning } from '@rc-component/util';
33
import * as React from 'react';
44
import useLocale from '../hooks/useLocale';
55
import { fillShowTimeConfig, getTimeProps } from '../hooks/useTimeConfig';
@@ -227,10 +227,7 @@ function PickerPanel<DateType extends object = any>(
227227
const now = generateConfig.getNow();
228228

229229
// ========================== Mode ==========================
230-
const [mergedMode, setMergedMode] = useMergedState<PanelMode>(picker, {
231-
value: mode,
232-
postState: (val) => val || 'date',
233-
});
230+
const [mergedMode, setMergedMode] = useControlledState<PanelMode>(picker || 'date', mode);
234231

235232
const internalMode: InternalMode =
236233
mergedMode === 'date' && mergedShowTime ? 'datetime' : mergedMode;
@@ -241,9 +238,7 @@ function PickerPanel<DateType extends object = any>(
241238
// ========================= Value ==========================
242239
// >>> Real value
243240
// Interactive with `onChange` event which only trigger when the `mode` is `picker`
244-
const [innerValue, setMergedValue] = useMergedState(defaultValue, {
245-
value,
246-
});
241+
const [innerValue, setMergedValue] = useControlledState(defaultValue, value);
247242

248243
const mergedValue = React.useMemo(() => {
249244
// Clean up `[null]`
@@ -282,11 +277,9 @@ function PickerPanel<DateType extends object = any>(
282277

283278
// >>> PickerValue
284279
// PickerValue is used to control the current displaying panel
285-
const [mergedPickerValue, setInternalPickerValue] = useMergedState(
280+
const [mergedPickerValue, setInternalPickerValue] = useControlledState(
286281
defaultPickerValue || mergedValue[0] || now,
287-
{
288-
value: pickerValue,
289-
},
282+
pickerValue,
290283
);
291284

292285
React.useEffect(() => {

0 commit comments

Comments
 (0)