mirror of
https://github.com/streamich/react-use.git
synced 2025-12-08 18:02:14 +00:00
22 lines
613 B
TypeScript
22 lines
613 B
TypeScript
import { Dispatch, useMemo, useRef } from 'react';
|
|
import useUpdate from './useUpdate';
|
|
import { HookState, InitialHookState, resolveHookState } from './util/resolveHookState';
|
|
|
|
export default function useGetSet<S>(initialState: InitialHookState<S>): [() => S, Dispatch<HookState<S>>] {
|
|
const state = useRef(resolveHookState(initialState));
|
|
const update = useUpdate();
|
|
|
|
return useMemo(
|
|
() => [
|
|
// get
|
|
() => state.current as S,
|
|
// set
|
|
(newState: HookState<S>) => {
|
|
state.current = resolveHookState(newState, state.current);
|
|
update();
|
|
},
|
|
],
|
|
[]
|
|
);
|
|
}
|