mobx-react-use-autorun 3.1.2 → 3.1.8

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.
package/README.md CHANGED
@@ -6,7 +6,7 @@ Provide concise usage for mobx in react<br/>
6
6
 
7
7
  # `Usage`
8
8
 
9
- ### Notes - Define state and props with useMobxState
9
+ ### Usage - Define state and props with useMobxState
10
10
 
11
11
  import { useMobxState, observer } from 'mobx-react-use-autorun';
12
12
  import { useRef } from 'react';
@@ -110,7 +110,7 @@ The second:
110
110
 
111
111
  Provide a method to generate state, the state is executed only once, and the performance is better.<br/>
112
112
 
113
- ### Notes - Subscription property changes with useMobxEffect
113
+ ### Usage - Subscription property changes with useMobxEffect
114
114
 
115
115
  import { useMobxState, observer } from 'mobx-react-use-autorun';
116
116
  import { useMobxEffect, toJS } from 'mobx-react-use-autorun'
@@ -128,7 +128,7 @@ Provide a method to generate state, the state is executed only once, and the per
128
128
  </div>
129
129
  })
130
130
 
131
- ### Notes - Get the real data of the proxy object with toJS
131
+ ### Usage - Get the real data of the proxy object with toJS
132
132
 
133
133
  toJS will cause data to be used, please do not execute toJS(state) in component rendering code, it may cause repeated rendering.<br/>
134
134
  Wrong Usage Demonstration:<br/>
@@ -169,7 +169,7 @@ Correct Example:<br/>
169
169
  return <button onClick={() => console.log(toJS(state))}>{'Click Me'}</button>;
170
170
  })
171
171
 
172
- ### Notes - Define global mutable data with observable
172
+ ### Usage - Define global mutable data with observable
173
173
 
174
174
  import { observable } from 'mobx-react-use-autorun';
175
175
 
@@ -195,7 +195,7 @@ Correct Example:<br/>
195
195
  </div>;
196
196
  })
197
197
 
198
- ## Notes - Lifecycle hooks
198
+ ### Usage - Lifecycle hooks
199
199
 
200
200
  useMount is executed when the component loaded.<br/>
201
201
  useUnmount is executed when the component is unmount.<br/>
@@ -225,6 +225,12 @@ useUnmount is executed when the component is unmount.<br/>
225
225
  return null;
226
226
  })
227
227
 
228
+ # Learn More
229
+
230
+ 1. React UI framework (https://reactjs.org)<br/>
231
+ 2. Reactive Extensions Library for JavaScript (https://www.npmjs.com/package/rxjs)
232
+ 3. Material UI is a library of React UI components that implements Google's Material Design (https://mui.com)
233
+
228
234
  # Getting Started
229
235
 
230
236
  This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app). If you have any questions, please contact zdu.strong@gmail.com.<br/>
@@ -249,16 +255,10 @@ Builds the files for production to the `dist` folder.<br/>
249
255
 
250
256
  Publish to npm repository<br/>
251
257
 
252
- Pre-step, please run
258
+ Pre-step, please run<br/>
253
259
 
254
260
  npm login --location=global
255
261
 
256
- # Learn More
257
-
258
- 1. React UI framework (https://reactjs.org)<br/>
259
- 2. Reactive Extensions Library for JavaScript (https://www.npmjs.com/package/rxjs)
260
- 3. Material UI is a library of React UI components that implements Google's Material Design (https://mui.com)
261
-
262
262
  # License
263
263
 
264
264
  This project is licensed under the terms of the [MIT license](./LICENSE).
@@ -1 +1 @@
1
- {"version":3,"file":"mobx_config.js","sourceRoot":"","sources":["../../lib/js/mobx_config.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AAEjC,SAAS,CAAC;IACN,cAAc,EAAE,OAAO;CAC1B,CAAC,CAAA"}
1
+ {"version":3,"file":"mobx_config.js","sourceRoot":"","sources":["../../lib/js/mobx_config.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AAEjC,SAAS,CAAC;IACR,cAAc,EAAE,OAAO;CACxB,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"useMobxEffect.js","sourceRoot":"","sources":["../../lib/js/useMobxEffect.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACjD,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;IAEtE,IAAM,KAAK,GAAG,YAAY,CAAC;QACvB,YAAY,EAAE,IAAI,YAAY,EAAE;KACnC,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;QACN,IAAI,CAAC,cAAc,EAAE;YACjB,QAAQ,EAAE,CAAA;SACb;IACL,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC;QACL,IAAI,cAAc,EAAE;YAChB,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,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,YAAY,CAAC;gBACpC,UAAQ,EAAE,CAAC;YACf,CAAC,CAAC,CAAC,CAAC;SACP;IACL,CAAC,CAAC,CAAA;IAEF,UAAU,CAAC;QACP,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;IACrC,CAAC,CAAC,CAAA;AACN,CAAC,CAAA"}
1
+ {"version":3,"file":"useMobxEffect.js","sourceRoot":"","sources":["../../lib/js/useMobxEffect.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACjD,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;QACzB,YAAY,EAAE,IAAI,YAAY,EAAE;KACjC,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;YACnB,QAAQ,EAAE,CAAA;SACX;IACH,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC;QACP,IAAI,cAAc,EAAE;YAClB,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,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,YAAY,CAAC;gBACtC,UAAQ,EAAE,CAAC;YACb,CAAC,CAAC,CAAC,CAAC;SACL;IACH,CAAC,CAAC,CAAA;IAEF,UAAU,CAAC;QACT,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;IACnC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA"}
@@ -1,11 +1,19 @@
1
1
  import { extendObservable, remove, isObservable, runInAction } from 'mobx';
2
2
  import { useLocalObservable } from 'mobx-react-lite';
3
+ import { useRef } from 'react';
3
4
  export function useMobxState(state, props) {
4
5
  var mobxState = useLocalObservable(typeof state === "function" ? state : function () { return state; });
6
+ var keyListOfState = useRef([]);
5
7
  runInAction(function () {
6
8
  var _a, _b;
7
9
  var _c;
8
10
  if (props) {
11
+ for (var _i = 0, _d = keyListOfState.current; _i < _d.length; _i++) {
12
+ var key = _d[_i];
13
+ if (!Object.keys(props).includes(key)) {
14
+ remove(mobxState, key);
15
+ }
16
+ }
9
17
  for (var key in props) {
10
18
  if (isObservable(props[key]) || ((_c = Object.getOwnPropertyDescriptor(props, key)) === null || _c === void 0 ? void 0 : _c.get)) {
11
19
  Object.defineProperty(mobxState, key, Object.getOwnPropertyDescriptor(props, key));
@@ -17,6 +25,10 @@ export function useMobxState(state, props) {
17
25
  }
18
26
  }
19
27
  }
28
+ keyListOfState.current.splice(0, keyListOfState.current.length);
29
+ for (var key in props) {
30
+ keyListOfState.current.push(key);
31
+ }
20
32
  }
21
33
  });
22
34
  return mobxState;
@@ -1 +1 @@
1
- {"version":3,"file":"useMobxState.js","sourceRoot":"","sources":["../../lib/js/useMobxState.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,MAAM,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAKrD,MAAM,UAAU,YAAY,CAAyD,KAAoB,EAAE,KAAS;IAChH,IAAM,SAAS,GAAG,kBAAkB,CAAC,OAAO,KAAK,KAAK,UAAU,CAAC,CAAC,CAAE,KAAa,CAAC,CAAC,CAAC,cAAM,OAAA,KAAK,EAAL,CAAK,CAAC,CAAC;IAEjG,WAAW,CAAC;;;QAER,IAAI,KAAK,EAAE;YACP,KAAK,IAAM,GAAG,IAAI,KAAK,EAAE;gBACrB,IAAI,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAI,MAAA,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,GAAG,CAAC,0CAAE,GAAG,CAAA,EAAE;oBAC9E,MAAM,CAAC,cAAc,CAAC,SAAS,EAAE,GAAG,EAAE,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,GAAG,CAAQ,CAAC,CAAA;iBAC5F;qBAAM;oBACH,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,GAAG,CAAC,EAAE;wBAC/B,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;wBACvB,gBAAgB,CAAC,SAAS,YAAI,GAAC,GAAG,IAAG,KAAK,CAAC,GAAG,CAAC,iBAAM,GAAC,GAAG,IAAG,KAAK,MAAG,CAAA;qBACvE;iBACJ;aACJ;SACJ;IACL,CAAC,CAAC,CAAA;IAEF,OAAO,SAAgB,CAAC;AAC5B,CAAC"}
1
+ {"version":3,"file":"useMobxState.js","sourceRoot":"","sources":["../../lib/js/useMobxState.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,MAAM,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAK/B,MAAM,UAAU,YAAY,CAAyD,KAAoB,EAAE,KAAS;IAClH,IAAM,SAAS,GAAG,kBAAkB,CAAC,OAAO,KAAK,KAAK,UAAU,CAAC,CAAC,CAAE,KAAa,CAAC,CAAC,CAAC,cAAM,OAAA,KAAK,EAAL,CAAK,CAAC,CAAC;IAEjG,IAAM,cAAc,GAAG,MAAM,CAAW,EAAE,CAAC,CAAC;IAE5C,WAAW,CAAC;;;QAEV,IAAI,KAAK,EAAE;YAET,KAAkB,UAAsB,EAAtB,KAAA,cAAc,CAAC,OAAO,EAAtB,cAAsB,EAAtB,IAAsB,EAAE;gBAArC,IAAM,GAAG,SAAA;gBACZ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;oBACrC,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;iBACxB;aACF;YAED,KAAK,IAAM,GAAG,IAAI,KAAK,EAAE;gBACvB,IAAI,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAI,MAAA,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,GAAG,CAAC,0CAAE,GAAG,CAAA,EAAE;oBAChF,MAAM,CAAC,cAAc,CAAC,SAAS,EAAE,GAAG,EAAE,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,GAAG,CAAQ,CAAC,CAAA;iBAC1F;qBAAM;oBACL,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,GAAG,CAAC,EAAE;wBACjC,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;wBACvB,gBAAgB,CAAC,SAAS,YAAI,GAAC,GAAG,IAAG,KAAK,CAAC,GAAG,CAAC,iBAAM,GAAC,GAAG,IAAG,KAAK,MAAG,CAAA;qBACrE;iBACF;aACF;YAED,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAChE,KAAK,IAAM,GAAG,IAAI,KAAK,EAAE;gBACvB,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aAClC;SACF;IACH,CAAC,CAAC,CAAA;IAEF,OAAO,SAAgB,CAAC;AAC1B,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { configure } from 'mobx';
2
2
 
3
3
  configure({
4
- enforceActions: 'never'
4
+ enforceActions: 'never'
5
5
  })
@@ -6,29 +6,29 @@ import { useEffect } from 'react';
6
6
 
7
7
  export const useMobxEffect = (callback: () => void, dependencyList?: any[]): void => {
8
8
 
9
- const state = useMobxState({
10
- subscription: new Subscription(),
11
- }, { callback })
9
+ const state = useMobxState({
10
+ subscription: new Subscription(),
11
+ }, { callback })
12
12
 
13
- const source = useMobxState({}, Object.assign({}, dependencyList));
13
+ const source = useMobxState({}, Object.assign({}, dependencyList));
14
14
 
15
- useEffect(() => {
16
- if (!dependencyList) {
17
- callback()
18
- }
19
- })
15
+ useEffect(() => {
16
+ if (!dependencyList) {
17
+ callback()
18
+ }
19
+ })
20
20
 
21
- useMount(() => {
22
- if (dependencyList) {
23
- const disposer = reaction(() => [toJS(source)], () => state.callback(), { fireImmediately: true, delay: 1 });
21
+ useMount(() => {
22
+ if (dependencyList) {
23
+ const disposer = reaction(() => [toJS(source)], () => state.callback(), { fireImmediately: true, delay: 1 });
24
24
 
25
- state.subscription.add(new Subscription(() => {
26
- disposer();
27
- }));
28
- }
29
- })
25
+ state.subscription.add(new Subscription(() => {
26
+ disposer();
27
+ }));
28
+ }
29
+ })
30
30
 
31
- useUnmount(() => {
32
- state.subscription.unsubscribe();
33
- })
31
+ useUnmount(() => {
32
+ state.subscription.unsubscribe();
33
+ })
34
34
  }
@@ -1,27 +1,42 @@
1
1
  import { extendObservable, remove, isObservable, runInAction } from 'mobx';
2
2
  import { useLocalObservable } from 'mobx-react-lite';
3
+ import { useRef } from 'react';
3
4
 
4
5
  export function useMobxState<T extends Record<any, any>>(state: T | (() => T)): T;
5
6
  export function useMobxState<T extends Record<any, any>, P extends Record<any, any>>(state: T | (() => T), props: P): T & P;
6
7
 
7
8
  export function useMobxState<T extends Record<any, any>, P extends Record<any, any>>(state: T | (() => T), props?: P): T & P {
8
- const mobxState = useLocalObservable(typeof state === "function" ? (state as any) : () => state);
9
-
10
- runInAction(() => {
11
-
12
- if (props) {
13
- for (const key in props) {
14
- if (isObservable(props[key]) || Object.getOwnPropertyDescriptor(props, key)?.get) {
15
- Object.defineProperty(mobxState, key, Object.getOwnPropertyDescriptor(props, key) as any)
16
- } else {
17
- if (props[key] !== mobxState[key]) {
18
- remove(mobxState, key);
19
- extendObservable(mobxState, { [key]: props[key] }, { [key]: false })
20
- }
21
- }
22
- }
9
+ const mobxState = useLocalObservable(typeof state === "function" ? (state as any) : () => state);
10
+
11
+ const keyListOfState = useRef<string[]>([]);
12
+
13
+ runInAction(() => {
14
+
15
+ if (props) {
16
+
17
+ for (const key of keyListOfState.current) {
18
+ if (!Object.keys(props).includes(key)) {
19
+ remove(mobxState, key);
23
20
  }
24
- })
21
+ }
22
+
23
+ for (const key in props) {
24
+ if (isObservable(props[key]) || Object.getOwnPropertyDescriptor(props, key)?.get) {
25
+ Object.defineProperty(mobxState, key, Object.getOwnPropertyDescriptor(props, key) as any)
26
+ } else {
27
+ if (props[key] !== mobxState[key]) {
28
+ remove(mobxState, key);
29
+ extendObservable(mobxState, { [key]: props[key] }, { [key]: false })
30
+ }
31
+ }
32
+ }
33
+
34
+ keyListOfState.current.splice(0, keyListOfState.current.length);
35
+ for (const key in props) {
36
+ keyListOfState.current.push(key);
37
+ }
38
+ }
39
+ })
25
40
 
26
- return mobxState as any;
41
+ return mobxState as any;
27
42
  }
package/package.json CHANGED
@@ -1 +1 @@
1
- {"name":"mobx-react-use-autorun","version":"3.1.2","description":"React Hook for mobx","scripts":{"test":"npx -y -p typescript -p ts-node ts-node --skipProject bin/mobx_react_test.ts","build":"npx -y -p typescript -p ts-node ts-node --skipProject bin/mobx_react_build.ts","make":"npx -y -p typescript -p ts-node ts-node --skipProject bin/mobx_react_make.ts"},"dependencies":{"mobx":"6.8.0","mobx-react-lite":"3.4.0","react-use":"17.4.0","rxjs":"7.8.0"},"peerDependencies":{"react":">=16.8.0"},"license":"MIT","keywords":["react","mobx","typescript"],"main":"./dist/index.js","types":"./dist/index.d.ts","eslintConfig":{"extends":["react-app","react-app/jest"]},"homepage":"https://github.com/zdu-strong/mobx-react-use-autorun#readme","repository":{"type":"git","url":"git+https://github.com/zdu-strong/mobx-react-use-autorun.git"},"files":["lib","dist"],"bugs":{"url":"https://github.com/zdu-strong/mobx-react-use-autorun/issues"},"publishConfig":{"registry":"https://registry.npmjs.org/"}}
1
+ {"name":"mobx-react-use-autorun","version":"3.1.8","description":"React Hook for mobx","scripts":{"test":"npx -y -p typescript -p ts-node ts-node --skipProject bin/mobx_react_test.ts","build":"npx -y -p typescript -p ts-node ts-node --skipProject bin/mobx_react_build.ts","make":"npx -y -p typescript -p ts-node ts-node --skipProject bin/mobx_react_make.ts"},"dependencies":{"mobx":"6.8.0","mobx-react-lite":"3.4.0","react-use":"17.4.0","rxjs":"7.8.0"},"peerDependencies":{"react":">=16.8.0"},"license":"MIT","keywords":["react","mobx","typescript"],"main":"./dist/index.js","types":"./dist/index.d.ts","eslintConfig":{"extends":["react-app","react-app/jest"]},"homepage":"https://github.com/zdu-strong/mobx-react-use-autorun#readme","repository":{"type":"git","url":"git+https://github.com/zdu-strong/mobx-react-use-autorun.git"},"files":["lib","dist"],"bugs":{"url":"https://github.com/zdu-strong/mobx-react-use-autorun/issues"},"publishConfig":{"registry":"https://registry.npmjs.org/"}}