vtils
Version:
一个面向业务的 JavaScript/TypeScript 实用程序库。
26 lines (25 loc) • 799 B
JavaScript
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
}];
}