parsec-hooks 1.0.7 → 1.0.11

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,5 +1,4 @@
1
- /// <reference types="react" />
2
- declare const _default: <D extends unknown>(name: string, initState?: D) => (D | import("react").Dispatch<import("react").SetStateAction<D>>)[];
1
+ declare const _default: <D extends unknown>(name: string, initState?: D) => [D, (state: D) => void];
3
2
  /**
4
3
  * 在每个需要的地方使用传入,得到一个全局的状态,如:
5
4
  * const globalLoading = useGlobalState('globalLoading')
@@ -11,7 +11,6 @@ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/sli
11
11
 
12
12
  var _react = require("react");
13
13
 
14
- var useCount = 0;
15
14
  var globalObj = {};
16
15
  /**
17
16
  * 在每个需要的地方使用传入,得到一个全局的状态,如:
@@ -19,32 +18,30 @@ var globalObj = {};
19
18
  */
20
19
 
21
20
  var _default = function _default(name, initState) {
22
- var count = (0, _react.useRef)(useCount++);
21
+ var _globalObj$name;
23
22
 
24
- var _useState = (0, _react.useState)(initState),
23
+ var _useState = (0, _react.useState)(((_globalObj$name = globalObj[name]) === null || _globalObj$name === void 0 ? void 0 : _globalObj$name.state) || initState),
25
24
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
26
25
  globalState = _useState2[0],
27
26
  setGlobalState = _useState2[1];
28
27
 
29
28
  if (!globalObj[name]) {
30
- globalObj[name] = {};
29
+ globalObj[name] = {
30
+ state: globalState,
31
+ sets: []
32
+ };
31
33
  }
32
34
 
33
- if (!globalObj[name][count.current]) {
34
- globalObj[name][count.current] = {};
35
- }
36
-
37
- var current = globalObj[name][count.current];
38
- (0, _react.useEffect)(function () {
39
- current.setGlobalState = setGlobalState;
40
- current.globalState = globalState;
41
- Object.values(globalObj[name]).forEach(function (item) {
42
- if (item.globalState !== current.globalState) {
43
- item.setGlobalState(current.globalState);
44
- }
35
+ (0, _react.useLayoutEffect)(function () {
36
+ globalObj[name].sets.push(setGlobalState);
37
+ }, [name]);
38
+ return [globalState, function (state) {
39
+ globalObj[name].state = state;
40
+ setGlobalState(state);
41
+ globalObj[name].sets.forEach(function (fn) {
42
+ return fn(state);
45
43
  });
46
- }, [current, globalState, name]);
47
- return [globalState, setGlobalState];
44
+ }];
48
45
  };
49
46
 
50
47
  exports.default = _default;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "parsec-hooks",
3
- "version": "1.0.7",
3
+ "version": "1.0.11",
4
4
  "description": "秒差距前端常用的hooks工具",
5
5
  "author": "mushan0x0",
6
6
  "license": "MIT",