UNPKG

1.01 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports.useTangledState = void 0;
4var React = require("react");
5var useTangledContext_1 = require("./useTangledContext");
6function useTangledState(key, defaultV) {
7 var tangledContext = useTangledContext_1.useTangledContext();
8 var _a = React.useState(tangledContext.stateOf(key) || defaultV), localState = _a[0], setLocalState = _a[1];
9 var cbRef = React.useRef(undefined);
10 React.useEffect(function () {
11 cbRef.current = function (newV, _oldV, source) {
12 if (source !== cbRef.current) {
13 setLocalState(newV);
14 }
15 };
16 return tangledContext.subscribe(key, cbRef.current);
17 }, []);
18 React.useEffect(function () {
19 if (localState !== tangledContext.stateOf(key)) {
20 tangledContext.update(key, localState, cbRef.current);
21 }
22 }, [localState]);
23 return [localState, setLocalState];
24}
25exports.useTangledState = useTangledState;