@aiszlab/relax 2.1.2-beta.3 → 2.1.2-beta.4

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.
@@ -4,7 +4,7 @@ var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
4
4
  var react = require('react');
5
5
  var isUndefined = require('../is/is-undefined.cjs');
6
6
  var isFunction = require('../is/is-function.cjs');
7
- var reactDom = require('react-dom');
7
+ var useUpdateEffect = require('./use-update-effect.cjs');
8
8
 
9
9
  function useControlledState(controlledState) {
10
10
  var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
@@ -25,27 +25,14 @@ function useControlledState(controlledState) {
25
25
  _useState2 = _slicedToArray(_useState, 2),
26
26
  _state = _useState2[0],
27
27
  _setState = _useState2[1];
28
- // 变更状态函数
29
- // 变更内容为函数,且需要触发`onChange`,那么本次状态更新必为同步
30
- // 其余继续保持批处理逻辑
31
- var setState = react.useCallback(function (newValue) {
32
- if (isFunction.isFunction(newValue)) {
33
- if (onChange) {
34
- reactDom.flushSync(function () {
35
- _setState(newValue);
36
- });
37
- onChange(_state);
38
- return;
39
- }
40
- _setState(newValue);
41
- return;
42
- }
43
- _setState(newValue);
44
- onChange === null || onChange === void 0 || onChange(newValue);
45
- }, [_setState, _state]);
28
+ // 监听内部状态变更
29
+ // 如果状态发生更新时,触发回调函数`onChange`
30
+ useUpdateEffect.useUpdateEffect(function () {
31
+ onChange === null || onChange === void 0 || onChange(_state);
32
+ }, [_state]);
46
33
  // use controlled
47
34
  var state = isUndefined.isUndefined(controlledState) ? _state : controlledState;
48
- return [state, setState];
35
+ return [state, _setState];
49
36
  }
50
37
 
51
38
  exports.useControlledState = useControlledState;
@@ -1,8 +1,8 @@
1
1
  import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
2
- import { useState, useCallback } from 'react';
2
+ import { useState } from 'react';
3
3
  import { isUndefined } from '../is/is-undefined.mjs';
4
4
  import { isFunction } from '../is/is-function.mjs';
5
- import { flushSync } from 'react-dom';
5
+ import { useUpdateEffect } from './use-update-effect.mjs';
6
6
 
7
7
  function useControlledState(controlledState) {
8
8
  var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
@@ -23,27 +23,14 @@ function useControlledState(controlledState) {
23
23
  _useState2 = _slicedToArray(_useState, 2),
24
24
  _state = _useState2[0],
25
25
  _setState = _useState2[1];
26
- // 变更状态函数
27
- // 变更内容为函数,且需要触发`onChange`,那么本次状态更新必为同步
28
- // 其余继续保持批处理逻辑
29
- var setState = useCallback(function (newValue) {
30
- if (isFunction(newValue)) {
31
- if (onChange) {
32
- flushSync(function () {
33
- _setState(newValue);
34
- });
35
- onChange(_state);
36
- return;
37
- }
38
- _setState(newValue);
39
- return;
40
- }
41
- _setState(newValue);
42
- onChange === null || onChange === void 0 || onChange(newValue);
43
- }, [_setState, _state]);
26
+ // 监听内部状态变更
27
+ // 如果状态发生更新时,触发回调函数`onChange`
28
+ useUpdateEffect(function () {
29
+ onChange === null || onChange === void 0 || onChange(_state);
30
+ }, [_state]);
44
31
  // use controlled
45
32
  var state = isUndefined(controlledState) ? _state : controlledState;
46
- return [state, setState];
33
+ return [state, _setState];
47
34
  }
48
35
 
49
36
  export { useControlledState };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aiszlab/relax",
3
- "version": "2.1.2-beta.3",
3
+ "version": "2.1.2-beta.4",
4
4
  "description": "react utils collection",
5
5
  "exports": {
6
6
  ".": {