@aiszlab/relax 2.1.0 → 2.1.2-beta.0
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/dist/hooks/use-controlled-state.cjs +20 -11
- package/dist/hooks/use-controlled-state.d.ts +4 -4
- package/dist/hooks/use-controlled-state.mjs +20 -11
- package/dist/hooks/use-identity.cjs +1 -1
- package/dist/hooks/use-identity.mjs +1 -1
- package/dist/hooks/use-lazy-memo.cjs +31 -0
- package/dist/hooks/use-lazy-memo.d.ts +8 -0
- package/dist/hooks/use-lazy-memo.mjs +29 -0
- package/dist/index.cjs +2 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.mjs +1 -0
- package/package.json +1 -1
|
@@ -3,13 +3,14 @@
|
|
|
3
3
|
var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
|
|
4
4
|
var react = require('react');
|
|
5
5
|
var isUndefined = require('../is/is-undefined.cjs');
|
|
6
|
-
var useUpdateEffect = require('./use-update-effect.cjs');
|
|
7
6
|
var isFunction = require('../is/is-function.cjs');
|
|
7
|
+
var useEvent = require('./use-event.cjs');
|
|
8
|
+
var reactDom = require('react-dom');
|
|
8
9
|
|
|
9
10
|
function useControlledState(controlledState) {
|
|
10
11
|
var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
|
|
11
12
|
defaultState = _ref.defaultState,
|
|
12
|
-
|
|
13
|
+
onChange = _ref.onChange;
|
|
13
14
|
// initialize state
|
|
14
15
|
var _useState = react.useState(function () {
|
|
15
16
|
// default use controlled state
|
|
@@ -25,19 +26,27 @@ function useControlledState(controlledState) {
|
|
|
25
26
|
_useState2 = _slicedToArray(_useState, 2),
|
|
26
27
|
_state = _useState2[0],
|
|
27
28
|
_setState = _useState2[1];
|
|
28
|
-
//
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
29
|
+
// 变更状态函数
|
|
30
|
+
// 变更内容为函数,且需要触发`onChange`,那么本次状态更新必为同步
|
|
31
|
+
// 其余继续保持批处理逻辑
|
|
32
|
+
var setState = useEvent.useEvent(function (action) {
|
|
33
|
+
if (isFunction.isFunction(action)) {
|
|
34
|
+
if (onChange) {
|
|
35
|
+
reactDom.flushSync(function () {
|
|
36
|
+
_setState(action);
|
|
37
|
+
});
|
|
38
|
+
onChange(_state);
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
_setState(action);
|
|
34
42
|
return;
|
|
35
43
|
}
|
|
36
|
-
_setState(
|
|
37
|
-
|
|
44
|
+
_setState(action);
|
|
45
|
+
onChange === null || onChange === void 0 || onChange(action);
|
|
46
|
+
});
|
|
38
47
|
// use controlled
|
|
39
48
|
var state = isUndefined.isUndefined(controlledState) ? _state : controlledState;
|
|
40
|
-
return [state,
|
|
49
|
+
return [state, setState];
|
|
41
50
|
}
|
|
42
51
|
|
|
43
52
|
exports.useControlledState = useControlledState;
|
|
@@ -7,10 +7,10 @@ type UsingControlledState<S> = {
|
|
|
7
7
|
*/
|
|
8
8
|
defaultState?: State<S>;
|
|
9
9
|
/**
|
|
10
|
-
*
|
|
11
|
-
*
|
|
10
|
+
* 状态发生改变后触发的回调事件
|
|
11
|
+
* @default undefined
|
|
12
12
|
*/
|
|
13
|
-
|
|
13
|
+
onChange?: (state: Partialable<S>) => void;
|
|
14
14
|
};
|
|
15
15
|
type UsedControlledState<T> = [T, Dispatch<SetStateAction<T>>];
|
|
16
16
|
/**
|
|
@@ -21,7 +21,7 @@ type UsedControlledState<T> = [T, Dispatch<SetStateAction<T>>];
|
|
|
21
21
|
*/
|
|
22
22
|
declare function useControlledState<T>(): UsedControlledState<Partialable<T>>;
|
|
23
23
|
declare function useControlledState<T>(controlledState: T): UsedControlledState<T>;
|
|
24
|
-
declare function useControlledState<T>(controlledState: T, usingControlledState: UsingControlledState<
|
|
24
|
+
declare function useControlledState<T>(controlledState: T, usingControlledState: UsingControlledState<T>): UsedControlledState<T>;
|
|
25
25
|
declare function useControlledState<T>(controlledState: Partialable<T>, usingControlledState: RequiredIn<UsingControlledState<T>, "defaultState">): UsedControlledState<T>;
|
|
26
26
|
declare function useControlledState<T>(controlledState: T, usingControlledState: UsingControlledState<T>): UsedControlledState<T>;
|
|
27
27
|
export { useControlledState };
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
|
|
2
2
|
import { useState } from 'react';
|
|
3
3
|
import { isUndefined } from '../is/is-undefined.mjs';
|
|
4
|
-
import { useUpdateEffect } from './use-update-effect.mjs';
|
|
5
4
|
import { isFunction } from '../is/is-function.mjs';
|
|
5
|
+
import { useEvent } from './use-event.mjs';
|
|
6
|
+
import { flushSync } from 'react-dom';
|
|
6
7
|
|
|
7
8
|
function useControlledState(controlledState) {
|
|
8
9
|
var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
|
|
9
10
|
defaultState = _ref.defaultState,
|
|
10
|
-
|
|
11
|
+
onChange = _ref.onChange;
|
|
11
12
|
// initialize state
|
|
12
13
|
var _useState = useState(function () {
|
|
13
14
|
// default use controlled state
|
|
@@ -23,19 +24,27 @@ function useControlledState(controlledState) {
|
|
|
23
24
|
_useState2 = _slicedToArray(_useState, 2),
|
|
24
25
|
_state = _useState2[0],
|
|
25
26
|
_setState = _useState2[1];
|
|
26
|
-
//
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
27
|
+
// 变更状态函数
|
|
28
|
+
// 变更内容为函数,且需要触发`onChange`,那么本次状态更新必为同步
|
|
29
|
+
// 其余继续保持批处理逻辑
|
|
30
|
+
var setState = useEvent(function (action) {
|
|
31
|
+
if (isFunction(action)) {
|
|
32
|
+
if (onChange) {
|
|
33
|
+
flushSync(function () {
|
|
34
|
+
_setState(action);
|
|
35
|
+
});
|
|
36
|
+
onChange(_state);
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
_setState(action);
|
|
32
40
|
return;
|
|
33
41
|
}
|
|
34
|
-
_setState(
|
|
35
|
-
|
|
42
|
+
_setState(action);
|
|
43
|
+
onChange === null || onChange === void 0 || onChange(action);
|
|
44
|
+
});
|
|
36
45
|
// use controlled
|
|
37
46
|
var state = isUndefined(controlledState) ? _state : controlledState;
|
|
38
|
-
return [state,
|
|
47
|
+
return [state, setState];
|
|
39
48
|
}
|
|
40
49
|
|
|
41
50
|
export { useControlledState };
|
|
@@ -14,7 +14,7 @@ var useIdentity = function useIdentity() {
|
|
|
14
14
|
if (!signal) {
|
|
15
15
|
return "".concat(id).concat(count.current++);
|
|
16
16
|
}
|
|
17
|
-
return "".concat(id).concat(signal, "
|
|
17
|
+
return "".concat(id).concat(signal, "_").concat(count.current++);
|
|
18
18
|
}, []);
|
|
19
19
|
return [id, unique];
|
|
20
20
|
};
|
|
@@ -12,7 +12,7 @@ var useIdentity = function useIdentity() {
|
|
|
12
12
|
if (!signal) {
|
|
13
13
|
return "".concat(id).concat(count.current++);
|
|
14
14
|
}
|
|
15
|
-
return "".concat(id).concat(signal, "
|
|
15
|
+
return "".concat(id).concat(signal, "_").concat(count.current++);
|
|
16
16
|
}, []);
|
|
17
17
|
return [id, unique];
|
|
18
18
|
};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var react = require('react');
|
|
4
|
+
var useDefault = require('./use-default.cjs');
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* useMemo 作为一个同步函数,在组件`render`过程中会阻塞浏览器渲染
|
|
8
|
+
* useLazyMemo 仅当组件内部需要访问数据时,才会执行计算
|
|
9
|
+
*/
|
|
10
|
+
var useLazyMemo = function useLazyMemo(fn, deps) {
|
|
11
|
+
var memorizedValue = react.useRef(null);
|
|
12
|
+
react.useMemo(function () {
|
|
13
|
+
memorizedValue.current = null;
|
|
14
|
+
}, [deps]);
|
|
15
|
+
var compute = useDefault.useDefault(function () {
|
|
16
|
+
return new Proxy({
|
|
17
|
+
value: null
|
|
18
|
+
}, {
|
|
19
|
+
get: function get(target, key) {
|
|
20
|
+
var _memorizedValue$curre;
|
|
21
|
+
if (key !== "value") {
|
|
22
|
+
return Reflect.get(target, key);
|
|
23
|
+
}
|
|
24
|
+
return (_memorizedValue$curre = memorizedValue.current) !== null && _memorizedValue$curre !== void 0 ? _memorizedValue$curre : fn();
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
return compute;
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
exports.useLazyMemo = useLazyMemo;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { useRef, useMemo } from 'react';
|
|
2
|
+
import { useDefault } from './use-default.mjs';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* useMemo 作为一个同步函数,在组件`render`过程中会阻塞浏览器渲染
|
|
6
|
+
* useLazyMemo 仅当组件内部需要访问数据时,才会执行计算
|
|
7
|
+
*/
|
|
8
|
+
var useLazyMemo = function useLazyMemo(fn, deps) {
|
|
9
|
+
var memorizedValue = useRef(null);
|
|
10
|
+
useMemo(function () {
|
|
11
|
+
memorizedValue.current = null;
|
|
12
|
+
}, [deps]);
|
|
13
|
+
var compute = useDefault(function () {
|
|
14
|
+
return new Proxy({
|
|
15
|
+
value: null
|
|
16
|
+
}, {
|
|
17
|
+
get: function get(target, key) {
|
|
18
|
+
var _memorizedValue$curre;
|
|
19
|
+
if (key !== "value") {
|
|
20
|
+
return Reflect.get(target, key);
|
|
21
|
+
}
|
|
22
|
+
return (_memorizedValue$curre = memorizedValue.current) !== null && _memorizedValue$curre !== void 0 ? _memorizedValue$curre : fn();
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
return compute;
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
export { useLazyMemo };
|
package/dist/index.cjs
CHANGED
|
@@ -43,6 +43,7 @@ var useAsyncEffect = require('./hooks/use-async-effect.cjs');
|
|
|
43
43
|
var useLazyRef = require('./hooks/use-lazy-ref.cjs');
|
|
44
44
|
var useScroll = require('./hooks/use-scroll.cjs');
|
|
45
45
|
var useScale = require('./hooks/use-scale.cjs');
|
|
46
|
+
var useLazyMemo = require('./hooks/use-lazy-memo.cjs');
|
|
46
47
|
var isRefable = require('./is/is-refable.cjs');
|
|
47
48
|
var isUndefined = require('./is/is-undefined.cjs');
|
|
48
49
|
var isNull = require('./is/is-null.cjs');
|
|
@@ -139,6 +140,7 @@ exports.useAsyncEffect = useAsyncEffect.useAsyncEffect;
|
|
|
139
140
|
exports.useLazyRef = useLazyRef.useLazyRef;
|
|
140
141
|
exports.useScroll = useScroll.useScroll;
|
|
141
142
|
exports.useScale = useScale.useScale;
|
|
143
|
+
exports.useLazyMemo = useLazyMemo.useLazyMemo;
|
|
142
144
|
exports.isRefable = isRefable.isRefable;
|
|
143
145
|
exports.isUndefined = isUndefined.isUndefined;
|
|
144
146
|
exports.isNull = isNull.isNull;
|
package/dist/index.d.ts
CHANGED
|
@@ -45,6 +45,7 @@ export { useAsyncEffect } from "./hooks/use-async-effect";
|
|
|
45
45
|
export { useLazyRef } from "./hooks/use-lazy-ref";
|
|
46
46
|
export { useScroll } from "./hooks/use-scroll";
|
|
47
47
|
export { useScale } from "./hooks/use-scale";
|
|
48
|
+
export { useLazyMemo } from "./hooks/use-lazy-memo";
|
|
48
49
|
/**
|
|
49
50
|
* @description
|
|
50
51
|
* is
|
package/dist/index.mjs
CHANGED
|
@@ -41,6 +41,7 @@ export { useAsyncEffect } from './hooks/use-async-effect.mjs';
|
|
|
41
41
|
export { useLazyRef } from './hooks/use-lazy-ref.mjs';
|
|
42
42
|
export { useScroll } from './hooks/use-scroll.mjs';
|
|
43
43
|
export { useScale } from './hooks/use-scale.mjs';
|
|
44
|
+
export { useLazyMemo } from './hooks/use-lazy-memo.mjs';
|
|
44
45
|
export { isRefable } from './is/is-refable.mjs';
|
|
45
46
|
export { isUndefined } from './is/is-undefined.mjs';
|
|
46
47
|
export { isNull } from './is/is-null.mjs';
|