Skip to content

useSetState

useSetState 是合并状态的 useState,可用于管理复杂的 object。

类型声明

ts
declare function 
useSetState
<
S
extends
Record
<string, any>>(
initialState
:
S
| (() =>
S
),
): [
S
,
SetState
<
S
>];

源码

ts
import { 
useState
} from 'react';
import
useMemoizedFn
from '../useMemoizedFn';
import {
isFunction
} from '../utils';
export type
SetState
<
S
extends
Record
<string, any>> = <
K
extends keyof
S
>(
state
:
Pick
<
S
,
K
> | null | ((
prevState
:
Readonly
<
S
>) =>
Pick
<
S
,
K
> |
S
| null),
) => void; const
useSetState
= <
S
extends
Record
<string, any>>(
initialState
:
S
| (() =>
S
),
): [
S
,
SetState
<
S
>] => {
const [
state
,
setState
] =
useState
<
S
>(
initialState
);
const
setMergeState
=
useMemoizedFn
((
patch
) => {
setState
((
prevState
) => {
const
newState
=
isFunction
(
patch
) ?
patch
(
prevState
) :
patch
;
return
newState
? { ...
prevState
, ...
newState
} :
prevState
;
}); }); return [
state
,
setMergeState
];
}; export default
useSetState
;