vtils
Version:
一个面向业务的 JavaScript/TypeScript 实用程序库。
29 lines (28 loc) • 948 B
JavaScript
exports.__esModule = true;
exports.useStaged = useStaged;
var _react = require("react");
var _reactUse = require("react-use");
var _useStateWithDeps2 = require("./useStateWithDeps");
/**
* 暂存状态。
*/
function useStaged(value, setValue) {
var _useStateWithDeps = (0, _useStateWithDeps2.useStateWithDeps)(value, [value]),
stagedState = _useStateWithDeps[0],
setStagedState = _useStateWithDeps[1];
var valueRef = (0, _reactUse.useLatest)(value);
var setValueRef = (0, _reactUse.useLatest)(setValue);
var stagedStateRef = (0, _reactUse.useLatest)(stagedState);
var commitStagedState = (0, _react.useCallback)(function () {
setValueRef.current(stagedStateRef.current);
}, []);
var resetStagedState = (0, _react.useCallback)(function () {
setStagedState(valueRef.current);
}, []);
return [stagedState, {
set: setStagedState,
commit: commitStagedState,
reset: resetStagedState
}];
}
;