mobx-react-use-autorun 4.0.27 → 4.0.29-beta

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,14 +1,55 @@
1
1
  "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
2
13
  Object.defineProperty(exports, "__esModule", { value: true });
3
14
  exports.useMobxEffect = void 0;
4
15
  var useMount_1 = require("./useMount");
5
16
  var rxjs_1 = require("rxjs");
6
17
  var mobx_1 = require("mobx");
7
- var useMobxState_1 = require("./useMobxState");
8
18
  var react_1 = require("react");
19
+ var mobx_2 = require("mobx");
9
20
  var useMobxEffect = function (callback, dependencyList) {
10
- var state = (0, useMobxState_1.useMobxState)({}, { callback: callback });
11
- var source = (0, useMobxState_1.useMobxState)({}, Object.assign({}, dependencyList));
21
+ var callbackRef = (0, react_1.useRef)({ callback: callback });
22
+ callbackRef.current.callback = callback;
23
+ var keyListOfSourceRef = (0, react_1.useRef)([]);
24
+ var props = Object.assign({}, dependencyList);
25
+ var sourceRef = (0, react_1.useRef)((0, mobx_1.observable)(__assign({}, props)));
26
+ (0, mobx_2.runInAction)(function () {
27
+ var _a, _b;
28
+ var _c;
29
+ if (dependencyList) {
30
+ for (var _i = 0, _d = keyListOfSourceRef.current; _i < _d.length; _i++) {
31
+ var key = _d[_i];
32
+ if (!Object.keys(props).includes(key)) {
33
+ (0, mobx_2.remove)(sourceRef.current, key);
34
+ }
35
+ }
36
+ for (var key in props) {
37
+ if ((0, mobx_2.isObservable)(props[key]) || ((_c = Object.getOwnPropertyDescriptor(props, key)) === null || _c === void 0 ? void 0 : _c.get)) {
38
+ Object.defineProperty(sourceRef.current, key, Object.getOwnPropertyDescriptor(props, key));
39
+ }
40
+ else {
41
+ if (props[key] !== sourceRef.current[key]) {
42
+ (0, mobx_2.remove)(sourceRef.current, key);
43
+ (0, mobx_2.extendObservable)(sourceRef.current, (_a = {}, _a[key] = props[key], _a), (_b = {}, _b[key] = false, _b));
44
+ }
45
+ }
46
+ }
47
+ keyListOfSourceRef.current.splice(0, keyListOfSourceRef.current.length);
48
+ for (var key in props) {
49
+ keyListOfSourceRef.current.push(key);
50
+ }
51
+ }
52
+ });
12
53
  (0, react_1.useEffect)(function () {
13
54
  if (!dependencyList) {
14
55
  callback();
@@ -16,7 +57,7 @@ var useMobxEffect = function (callback, dependencyList) {
16
57
  });
17
58
  (0, useMount_1.useMount)(function (subscription) {
18
59
  if (dependencyList) {
19
- var disposer_1 = (0, mobx_1.reaction)(function () { return [(0, mobx_1.toJS)(source)]; }, function () { return state.callback(); }, { fireImmediately: true, delay: 1 });
60
+ var disposer_1 = (0, mobx_1.reaction)(function () { return [(0, mobx_1.toJS)(sourceRef.current)]; }, function () { return callbackRef.current.callback(); }, { fireImmediately: true, delay: 1 });
20
61
  subscription.add(new rxjs_1.Subscription(function () {
21
62
  disposer_1();
22
63
  }));
@@ -1 +1 @@
1
- {"version":3,"file":"useMobxEffect.js","sourceRoot":"","sources":["../../../lib/js/useMobxEffect.tsx"],"names":[],"mappings":";;;AAAA,uCAAsC;AACtC,6BAAoC;AACpC,6BAAqC;AACrC,+CAA8C;AAC9C,+BAAkC;AAE3B,IAAM,aAAa,GAAG,UAAC,QAAoB,EAAE,cAAsB;IAExE,IAAM,KAAK,GAAG,IAAA,2BAAY,EAAC,EAC1B,EAAE,EAAE,QAAQ,UAAA,EAAE,CAAC,CAAA;IAEhB,IAAM,MAAM,GAAG,IAAA,2BAAY,EAAC,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC,CAAC;IAEnE,IAAA,iBAAS,EAAC;QACR,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,QAAQ,EAAE,CAAA;QACZ,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,IAAA,mBAAQ,EAAC,UAAC,YAAY;QACpB,IAAI,cAAc,EAAE,CAAC;YACnB,IAAM,UAAQ,GAAG,IAAA,eAAQ,EAAC,cAAM,OAAA,CAAC,IAAA,WAAI,EAAC,MAAM,CAAC,CAAC,EAAd,CAAc,EAAE,cAAM,OAAA,KAAK,CAAC,QAAQ,EAAE,EAAhB,CAAgB,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;YAE7G,YAAY,CAAC,GAAG,CAAC,IAAI,mBAAY,CAAC;gBAChC,UAAQ,EAAE,CAAC;YACb,CAAC,CAAC,CAAC,CAAC;QACN,CAAC;IACH,CAAC,CAAC,CAAA;AAEJ,CAAC,CAAA;AAvBY,QAAA,aAAa,iBAuBzB"}
1
+ {"version":3,"file":"useMobxEffect.js","sourceRoot":"","sources":["../../../lib/js/useMobxEffect.tsx"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.useMobxState = void 0;
3
+ exports.useMobxState = useMobxState;
4
4
  var mobx_1 = require("mobx");
5
5
  var mobx_react_lite_1 = require("mobx-react-lite");
6
6
  var react_1 = require("react");
@@ -36,5 +36,4 @@ function useMobxState(state, props) {
36
36
  });
37
37
  return mobxState;
38
38
  }
39
- exports.useMobxState = useMobxState;
40
39
  //# sourceMappingURL=useMobxState.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useMobxState.js","sourceRoot":"","sources":["../../../lib/js/useMobxState.tsx"],"names":[],"mappings":";;;AAAA,6BAA2E;AAC3E,mDAAqD;AACrD,+BAA+B;AAK/B,SAAgB,YAAY,CAAyD,KAAoB,EAAE,KAAS;IAClH,IAAM,SAAS,GAAG,IAAA,oCAAkB,EAAC,OAAO,KAAK,KAAK,UAAU,CAAC,CAAC,CAAE,KAAa,CAAC,CAAC,CAAC,cAAM,OAAA,KAAK,EAAL,CAAK,CAAC,CAAC;IAEjG,IAAM,cAAc,GAAG,IAAA,cAAM,EAAW,EAAE,CAAC,CAAC;IAE5C,IAAA,kBAAW,EAAC;;;QAEV,IAAI,KAAK,EAAE,CAAC;YAEV,KAAkB,UAAsB,EAAtB,KAAA,cAAc,CAAC,OAAO,EAAtB,cAAsB,EAAtB,IAAsB,EAAE,CAAC;gBAAtC,IAAM,GAAG,SAAA;gBACZ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;oBACtC,IAAA,aAAM,EAAC,SAAS,EAAE,GAAG,CAAC,CAAC;gBACzB,CAAC;YACH,CAAC;YAED,KAAK,IAAM,GAAG,IAAI,KAAK,EAAE,CAAC;gBACxB,IAAI,IAAA,mBAAY,EAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAI,MAAA,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,GAAG,CAAC,0CAAE,GAAG,CAAA,EAAE,CAAC;oBACjF,MAAM,CAAC,cAAc,CAAC,SAAS,EAAE,GAAG,EAAE,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,GAAG,CAAQ,CAAC,CAAA;gBAC3F,CAAC;qBAAM,CAAC;oBACN,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;wBAClC,IAAA,aAAM,EAAC,SAAS,EAAE,GAAG,CAAC,CAAC;wBACvB,IAAA,uBAAgB,EAAC,SAAS,YAAI,GAAC,GAAG,IAAG,KAAK,CAAC,GAAG,CAAC,iBAAM,GAAC,GAAG,IAAG,KAAK,MAAG,CAAA;oBACtE,CAAC;gBACH,CAAC;YACH,CAAC;YAED,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAChE,KAAK,IAAM,GAAG,IAAI,KAAK,EAAE,CAAC;gBACxB,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACnC,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,OAAO,SAAgB,CAAC;AAC1B,CAAC;AAlCD,oCAkCC"}
1
+ {"version":3,"file":"useMobxState.js","sourceRoot":"","sources":["../../../lib/js/useMobxState.tsx"],"names":[],"mappings":";;AAOA,oCAkCC;AAzCD,6BAA2E;AAC3E,mDAAqD;AACrD,+BAA+B;AAK/B,SAAgB,YAAY,CAAyD,KAAoB,EAAE,KAAS;IAClH,IAAM,SAAS,GAAG,IAAA,oCAAkB,EAAC,OAAO,KAAK,KAAK,UAAU,CAAC,CAAC,CAAE,KAAa,CAAC,CAAC,CAAC,cAAM,OAAA,KAAK,EAAL,CAAK,CAAC,CAAC;IAEjG,IAAM,cAAc,GAAG,IAAA,cAAM,EAAW,EAAE,CAAC,CAAC;IAE5C,IAAA,kBAAW,EAAC;;;QAEV,IAAI,KAAK,EAAE,CAAC;YAEV,KAAkB,UAAsB,EAAtB,KAAA,cAAc,CAAC,OAAO,EAAtB,cAAsB,EAAtB,IAAsB,EAAE,CAAC;gBAAtC,IAAM,GAAG,SAAA;gBACZ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;oBACtC,IAAA,aAAM,EAAC,SAAS,EAAE,GAAG,CAAC,CAAC;gBACzB,CAAC;YACH,CAAC;YAED,KAAK,IAAM,GAAG,IAAI,KAAK,EAAE,CAAC;gBACxB,IAAI,IAAA,mBAAY,EAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAI,MAAA,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,GAAG,CAAC,0CAAE,GAAG,CAAA,EAAE,CAAC;oBACjF,MAAM,CAAC,cAAc,CAAC,SAAS,EAAE,GAAG,EAAE,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,GAAG,CAAQ,CAAC,CAAA;gBAC3F,CAAC;qBAAM,CAAC;oBACN,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;wBAClC,IAAA,aAAM,EAAC,SAAS,EAAE,GAAG,CAAC,CAAC;wBACvB,IAAA,uBAAgB,EAAC,SAAS,YAAI,GAAC,GAAG,IAAG,KAAK,CAAC,GAAG,CAAC,iBAAM,GAAC,GAAG,IAAG,KAAK,MAAG,CAAA;oBACtE,CAAC;gBACH,CAAC;YACH,CAAC;YAED,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAChE,KAAK,IAAM,GAAG,IAAI,KAAK,EAAE,CAAC;gBACxB,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACnC,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,OAAO,SAAgB,CAAC;AAC1B,CAAC"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.useMount = void 0;
3
+ exports.useMount = useMount;
4
4
  var react_1 = require("react");
5
5
  var rxjs_1 = require("rxjs");
6
6
  var useMobxState_1 = require("./useMobxState");
@@ -20,5 +20,4 @@ function useMount(callback) {
20
20
  return function () { return subscription.unsubscribe(); };
21
21
  }, []);
22
22
  }
23
- exports.useMount = useMount;
24
23
  //# sourceMappingURL=useMount.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useMount.js","sourceRoot":"","sources":["../../../lib/js/useMount.tsx"],"names":[],"mappings":";;;AAAA,+BAAkC;AAClC,6BAAoC;AACpC,+CAA8C;AAE9C,SAAgB,QAAQ,CAAC,QAA8C;IAErE,IAAM,KAAK,GAAG,IAAA,2BAAY,EAAC;QACzB,YAAY,EAAE,IAAI,mBAAY,EAAE;KACjC,CAAC,CAAC;IAEH,IAAA,iBAAS,EAAC;QACR,IAAM,YAAY,GAAG,IAAI,mBAAY,EAAE,CAAC;QACxC,KAAK,CAAC,YAAY,GAAG,YAAY,CAAC;QAClC,OAAO,cAAM,OAAA,YAAY,CAAC,WAAW,EAAE,EAA1B,CAA0B,CAAC;IAC1C,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,IAAA,iBAAS,EAAC;QACR,IAAM,YAAY,GAAG,IAAI,mBAAY,EAAE,CAAC;QACxC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QACrC,QAAQ,CAAC,YAAY,CAAC,CAAC;QACvB,OAAO,cAAM,OAAA,YAAY,CAAC,WAAW,EAAE,EAA1B,CAA0B,CAAC;IAC1C,CAAC,EAAE,EAAE,CAAC,CAAA;AAER,CAAC;AAnBD,4BAmBC"}
1
+ {"version":3,"file":"useMount.js","sourceRoot":"","sources":["../../../lib/js/useMount.tsx"],"names":[],"mappings":";;AAIA,4BAmBC;AAvBD,+BAAkC;AAClC,6BAAoC;AACpC,+CAA8C;AAE9C,SAAgB,QAAQ,CAAC,QAA8C;IAErE,IAAM,KAAK,GAAG,IAAA,2BAAY,EAAC;QACzB,YAAY,EAAE,IAAI,mBAAY,EAAE;KACjC,CAAC,CAAC;IAEH,IAAA,iBAAS,EAAC;QACR,IAAM,YAAY,GAAG,IAAI,mBAAY,EAAE,CAAC;QACxC,KAAK,CAAC,YAAY,GAAG,YAAY,CAAC;QAClC,OAAO,cAAM,OAAA,YAAY,CAAC,WAAW,EAAE,EAA1B,CAA0B,CAAC;IAC1C,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,IAAA,iBAAS,EAAC;QACR,IAAM,YAAY,GAAG,IAAI,mBAAY,EAAE,CAAC;QACxC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QACrC,QAAQ,CAAC,YAAY,CAAC,CAAC;QACvB,OAAO,cAAM,OAAA,YAAY,CAAC,WAAW,EAAE,EAA1B,CAA0B,CAAC;IAC1C,CAAC,EAAE,EAAE,CAAC,CAAA;AAER,CAAC"}
@@ -1,11 +1,52 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
1
12
  import { useMount } from './useMount';
2
13
  import { Subscription } from 'rxjs';
3
- import { reaction, toJS } from 'mobx';
4
- import { useMobxState } from './useMobxState';
5
- import { useEffect } from 'react';
14
+ import { observable, reaction, toJS } from 'mobx';
15
+ import { useEffect, useRef } from 'react';
16
+ import { extendObservable, remove, isObservable, runInAction } from 'mobx';
6
17
  export var useMobxEffect = function (callback, dependencyList) {
7
- var state = useMobxState({}, { callback: callback });
8
- var source = useMobxState({}, Object.assign({}, dependencyList));
18
+ var callbackRef = useRef({ callback: callback });
19
+ callbackRef.current.callback = callback;
20
+ var keyListOfSourceRef = useRef([]);
21
+ var props = Object.assign({}, dependencyList);
22
+ var sourceRef = useRef(observable(__assign({}, props)));
23
+ runInAction(function () {
24
+ var _a, _b;
25
+ var _c;
26
+ if (dependencyList) {
27
+ for (var _i = 0, _d = keyListOfSourceRef.current; _i < _d.length; _i++) {
28
+ var key = _d[_i];
29
+ if (!Object.keys(props).includes(key)) {
30
+ remove(sourceRef.current, key);
31
+ }
32
+ }
33
+ for (var key in props) {
34
+ if (isObservable(props[key]) || ((_c = Object.getOwnPropertyDescriptor(props, key)) === null || _c === void 0 ? void 0 : _c.get)) {
35
+ Object.defineProperty(sourceRef.current, key, Object.getOwnPropertyDescriptor(props, key));
36
+ }
37
+ else {
38
+ if (props[key] !== sourceRef.current[key]) {
39
+ remove(sourceRef.current, key);
40
+ extendObservable(sourceRef.current, (_a = {}, _a[key] = props[key], _a), (_b = {}, _b[key] = false, _b));
41
+ }
42
+ }
43
+ }
44
+ keyListOfSourceRef.current.splice(0, keyListOfSourceRef.current.length);
45
+ for (var key in props) {
46
+ keyListOfSourceRef.current.push(key);
47
+ }
48
+ }
49
+ });
9
50
  useEffect(function () {
10
51
  if (!dependencyList) {
11
52
  callback();
@@ -13,7 +54,7 @@ export var useMobxEffect = function (callback, dependencyList) {
13
54
  });
14
55
  useMount(function (subscription) {
15
56
  if (dependencyList) {
16
- var disposer_1 = reaction(function () { return [toJS(source)]; }, function () { return state.callback(); }, { fireImmediately: true, delay: 1 });
57
+ var disposer_1 = reaction(function () { return [toJS(sourceRef.current)]; }, function () { return callbackRef.current.callback(); }, { fireImmediately: true, delay: 1 });
17
58
  subscription.add(new Subscription(function () {
18
59
  disposer_1();
19
60
  }));
@@ -1 +1 @@
1
- {"version":3,"file":"useMobxEffect.js","sourceRoot":"","sources":["../../../lib/js/useMobxEffect.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC,MAAM,CAAC,IAAM,aAAa,GAAG,UAAC,QAAoB,EAAE,cAAsB;IAExE,IAAM,KAAK,GAAG,YAAY,CAAC,EAC1B,EAAE,EAAE,QAAQ,UAAA,EAAE,CAAC,CAAA;IAEhB,IAAM,MAAM,GAAG,YAAY,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC,CAAC;IAEnE,SAAS,CAAC;QACR,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,QAAQ,EAAE,CAAA;QACZ,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,UAAC,YAAY;QACpB,IAAI,cAAc,EAAE,CAAC;YACnB,IAAM,UAAQ,GAAG,QAAQ,CAAC,cAAM,OAAA,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAd,CAAc,EAAE,cAAM,OAAA,KAAK,CAAC,QAAQ,EAAE,EAAhB,CAAgB,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;YAE7G,YAAY,CAAC,GAAG,CAAC,IAAI,YAAY,CAAC;gBAChC,UAAQ,EAAE,CAAC;YACb,CAAC,CAAC,CAAC,CAAC;QACN,CAAC;IACH,CAAC,CAAC,CAAA;AAEJ,CAAC,CAAA"}
1
+ {"version":3,"file":"useMobxEffect.js","sourceRoot":"","sources":["../../../lib/js/useMobxEffect.tsx"],"names":[],"mappings":"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"}
@@ -1,15 +1,49 @@
1
1
  import { useMount } from './useMount';
2
2
  import { Subscription } from 'rxjs';
3
- import { reaction, toJS } from 'mobx'
4
- import { useMobxState } from './useMobxState';
5
- import { useEffect } from 'react';
3
+ import { observable, reaction, toJS } from 'mobx'
4
+ import { useEffect, useRef } from 'react';
5
+ import { extendObservable, remove, isObservable, runInAction } from 'mobx';
6
6
 
7
7
  export const useMobxEffect = (callback: () => void, dependencyList?: any[]): void => {
8
8
 
9
- const state = useMobxState({
10
- }, { callback })
9
+ const callbackRef = useRef<{ callback: () => void }>({ callback: callback });
11
10
 
12
- const source = useMobxState({}, Object.assign({}, dependencyList));
11
+ callbackRef.current!.callback = callback;
12
+
13
+ const keyListOfSourceRef = useRef<string[]>([]);
14
+
15
+ const props = Object.assign({}, dependencyList);
16
+
17
+ const sourceRef = useRef(observable({
18
+ ...props
19
+ }));
20
+
21
+ runInAction(() => {
22
+ if (dependencyList) {
23
+
24
+ for (const key of keyListOfSourceRef.current) {
25
+ if (!Object.keys(props).includes(key)) {
26
+ remove(sourceRef.current!, key);
27
+ }
28
+ }
29
+
30
+ for (const key in props) {
31
+ if (isObservable(props[key]) || Object.getOwnPropertyDescriptor(props, key)?.get) {
32
+ Object.defineProperty(sourceRef.current!, key, Object.getOwnPropertyDescriptor(props, key) as any)
33
+ } else {
34
+ if (props[key] !== sourceRef.current![key]) {
35
+ remove(sourceRef.current!, key);
36
+ extendObservable(sourceRef.current!, { [key]: props[key] }, { [key]: false })
37
+ }
38
+ }
39
+ }
40
+
41
+ keyListOfSourceRef.current.splice(0, keyListOfSourceRef.current.length);
42
+ for (const key in props) {
43
+ keyListOfSourceRef.current.push(key);
44
+ }
45
+ }
46
+ })
13
47
 
14
48
  useEffect(() => {
15
49
  if (!dependencyList) {
@@ -19,7 +53,7 @@ export const useMobxEffect = (callback: () => void, dependencyList?: any[]): voi
19
53
 
20
54
  useMount((subscription) => {
21
55
  if (dependencyList) {
22
- const disposer = reaction(() => [toJS(source)], () => state.callback(), { fireImmediately: true, delay: 1 });
56
+ const disposer = reaction(() => [toJS(sourceRef.current)], () => callbackRef.current!.callback(), { fireImmediately: true, delay: 1 });
23
57
 
24
58
  subscription.add(new Subscription(() => {
25
59
  disposer();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mobx-react-use-autorun",
3
- "version": "4.0.27",
3
+ "version": "4.0.29-beta",
4
4
  "description": "Provide concise usage for mobx in react",
5
5
  "scripts": {
6
6
  "test": "npx -y -p typescript -p ts-node ts-node --skipProject bin/mobx_react_test.ts",
@@ -8,7 +8,7 @@
8
8
  "make": "npx -y -p typescript -p ts-node ts-node --skipProject bin/mobx_react_make.ts"
9
9
  },
10
10
  "dependencies": {
11
- "mobx": "6.12.3",
11
+ "mobx": "6.12.4",
12
12
  "mobx-react-lite": "4.0.7",
13
13
  "rxjs": "7.8.1"
14
14
  },