UNPKG

vtils

Version:

一个面向业务的 JavaScript/TypeScript 实用程序库。

26 lines (25 loc) 799 B
import { useCallback } from 'react'; import { useLatest } from 'react-use'; import { useStateWithDeps } from "./useStateWithDeps.js"; /** * 暂存状态。 */ export function useStaged(value, setValue) { var _useStateWithDeps = useStateWithDeps(value, [value]), stagedState = _useStateWithDeps[0], setStagedState = _useStateWithDeps[1]; var valueRef = useLatest(value); var setValueRef = useLatest(setValue); var stagedStateRef = useLatest(stagedState); var commitStagedState = useCallback(function () { setValueRef.current(stagedStateRef.current); }, []); var resetStagedState = useCallback(function () { setStagedState(valueRef.current); }, []); return [stagedState, { set: setStagedState, commit: commitStagedState, reset: resetStagedState }]; }