UNPKG

1.01 kBJavaScriptView Raw
1"use strict";
2
3var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
4
5var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
6
7Object.defineProperty(exports, "__esModule", {
8 value: true
9});
10exports.default = useSyncState;
11
12var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
13
14var React = _interopRequireWildcard(require("react"));
15
16function useSyncState(defaultState, onChange) {
17 var stateRef = React.useRef(defaultState);
18
19 var _React$useState = React.useState({}),
20 _React$useState2 = (0, _slicedToArray2.default)(_React$useState, 2),
21 forceUpdate = _React$useState2[1];
22
23 function setState(updater) {
24 var newValue = typeof updater === 'function' ? updater(stateRef.current) : updater;
25
26 if (newValue !== stateRef.current) {
27 onChange(newValue, stateRef.current);
28 }
29
30 stateRef.current = newValue;
31 forceUpdate({});
32 }
33
34 return [stateRef.current, setState];
35}
\No newline at end of file