@sheinx/hooks 3.2.3 → 3.2.5-beta.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -28,7 +28,7 @@ declare const useButton: (props?: BaseButtonProps) => {
28
28
  buttonRef?: React.Ref<HTMLButtonElement> | undefined;
29
29
  } & TOther_1 & {
30
30
  disabled: boolean | undefined;
31
- htmlType: "button" | "reset" | "submit" | undefined;
31
+ htmlType: "button" | "submit" | "reset" | undefined;
32
32
  onClick: (event: React.MouseEvent<HTMLButtonElement> | React.MouseEvent<HTMLAnchorElement>) => void;
33
33
  };
34
34
  getSpaceChildren: (children: React.ReactNode, space?: boolean, className?: string) => React.ReactNode;
@@ -4,7 +4,7 @@ declare const useDatePickerFormat: <Value extends DatePickerValueType>(props: Us
4
4
  resultArr: (string | undefined)[];
5
5
  targetResultArr: (string | undefined)[];
6
6
  dateArr: (Date | undefined)[];
7
- disabledStatus: "all" | "left" | "right" | undefined;
7
+ disabledStatus: "left" | "right" | "all" | undefined;
8
8
  currentArr: Date[];
9
9
  mode: DatePickerModeType[];
10
10
  isEmpty: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"use-form.d.ts","sourceRoot":"","sources":["use-form.ts"],"names":[],"mappings":";AAwBA,OAAO,EAAe,aAAa,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAC7F,OAAO,EAAe,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAI5D,QAAA,MAAM,OAAO;;;;;;;;;wBAgK8B;gBAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;aAAE;8BARzB,MAAM;oCAuDD,OAAO;;6BAfb,MAAM,KAAK,KAAK,GAAG,SAAS;;oCAdrB,MAAM,EAAE;sCArEN,MAAM,GAAG,MAAM,EAAE,mBAAgB,QAAQ,IAAI,CAAC;qCAiI5D,MAAM;gCAzCE,MAAM,SAAS,MAAM,UAAU,KAAK;gCAKpC,MAAM,SAAS,MAAM;;;;;;oBA1CpB;YAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;SAAE;0BARzB,MAAM;gCAuDD,OAAO;;yBAfb,MAAM,KAAK,KAAK,GAAG,SAAS;;gCAdrB,MAAM,EAAE;kCArEN,MAAM,GAAG,MAAM,EAAE,mBAAgB,QAAQ,IAAI,CAAC;iCAiI5D,MAAM;4BAzCE,MAAM,SAAS,MAAM,UAAU,KAAK;4BAKpC,MAAM,SAAS,MAAM;;CA6P9D,CAAC;AAEF,eAAe,OAAO,CAAC"}
1
+ {"version":3,"file":"use-form.d.ts","sourceRoot":"","sources":["use-form.ts"],"names":[],"mappings":";AAyBA,OAAO,EAAe,aAAa,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAC7F,OAAO,EAAe,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAI5D,QAAA,MAAM,OAAO;;;;;;;;;wBAmK8B;gBAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;aAAE;8BARzB,MAAM;oCAuDD,OAAO;;6BAfb,MAAM,KAAK,KAAK,GAAG,SAAS;;oCAdrB,MAAM,EAAE;sCArEN,MAAM,GAAG,MAAM,EAAE,mBAAgB,QAAQ,IAAI,CAAC;qCAiI5D,MAAM;gCAzCE,MAAM,SAAS,MAAM,UAAU,KAAK;gCAKpC,MAAM,SAAS,MAAM;;;;;;oBA1CpB;YAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;SAAE;0BARzB,MAAM;gCAuDD,OAAO;;yBAfb,MAAM,KAAK,KAAK,GAAG,SAAS;;gCAdrB,MAAM,EAAE;kCArEN,MAAM,GAAG,MAAM,EAAE,mBAAgB,QAAQ,IAAI,CAAC;iCAiI5D,MAAM;4BAzCE,MAAM,SAAS,MAAM,UAAU,KAAK;4BAKpC,MAAM,SAAS,MAAM;;CA4P9D,CAAC;AAEF,eAAe,OAAO,CAAC"}
@@ -11,6 +11,7 @@ var _useLatestObj = _interopRequireDefault(require("../../common/use-latest-obj"
11
11
  var _usePersistFn = _interopRequireDefault(require("../../common/use-persist-fn"));
12
12
  var _attribute = require("../../utils/attribute");
13
13
  var _flat = require("../../utils/flat");
14
+ var _useDefaultValue = require("../../common/use-default-value");
14
15
  var _immer = require("../../utils/immer");
15
16
  var _utils = require("../../utils");
16
17
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -49,6 +50,7 @@ var useForm = function useForm(props) {
49
50
  removeUndefined: removeUndefined,
50
51
  forceSet: true
51
52
  };
53
+ var preValue = (0, _useDefaultValue.usePrevious)(props.value);
52
54
  var formRef = React.useRef();
53
55
  var _React$useRef = React.useRef({
54
56
  defaultValues: {},
@@ -419,8 +421,8 @@ var useForm = function useForm(props) {
419
421
  var updateValue = function updateValue() {
420
422
  if (props.value !== context.lastValue && props.value !== context.value) {
421
423
  context.value = (0, _utils.deepClone)(props.value) || emptyObj;
422
- context.lastValue = props.value;
423
424
  }
425
+ context.lastValue = props.value;
424
426
  };
425
427
  updateValue();
426
428
  React.useEffect(function () {
@@ -443,14 +445,13 @@ var useForm = function useForm(props) {
443
445
  if (props.value === context.value) return;
444
446
  if (initValidate && !context.resetTime) {
445
447
  var keys = Object.keys(context.validateMap).filter(function (key) {
446
- var oldValue = (0, _utils.deepGet)(context.lastValue || emptyObj, key);
448
+ var oldValue = (0, _utils.deepGet)(preValue || emptyObj, key);
447
449
  var newValue = (0, _utils.deepGet)(context.value || emptyObj, key);
448
450
  return !(0, _utils.shallowEqual)(oldValue, newValue);
449
451
  });
450
452
  validateFields(keys).catch(function () {});
451
453
  }
452
454
  update();
453
- context.lastValue = props.value;
454
455
  context.resetTime = 0;
455
456
  }, [props.value]);
456
457
  React.useEffect(function () {
@@ -10,7 +10,7 @@ declare const useImage: (props?: BaseImageProps) => {
10
10
  getRootProps: <TOther extends ObjectType = ObjectType>(externalProps?: TOther) => {
11
11
  [x: string]: (event: any) => void;
12
12
  } & TOther & {
13
- ref: React.RefObject<HTMLDivElement | HTMLAnchorElement>;
13
+ ref: React.RefObject<HTMLAnchorElement | HTMLDivElement>;
14
14
  onClick: (event: React.MouseEvent<HTMLImageElement | HTMLDivElement>) => void;
15
15
  };
16
16
  getImageProps: <TOther_1 extends ObjectType = ObjectType>(externalProps?: TOther_1) => {
@@ -1 +1 @@
1
- {"version":3,"file":"use-table-virtual.d.ts","sourceRoot":"","sources":["use-table-virtual.tsx"],"names":[],"mappings":";AAIA,UAAU,oBAAoB;IAC5B,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAC3C,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AACD,QAAA,MAAM,eAAe,UAAW,oBAAoB;;;;;;;oBA6GpC,MAAM;mBACP,MAAM;WACd,MAAM;gBACD,MAAM;kBACJ,OAAO;;0BApEuB,MAAM,UAAU,MAAM;0BAxBtB,MAAM,QAAQ,MAAM;2BAgInB,MAAM;CAwDlD,CAAC;AAEF,eAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"use-table-virtual.d.ts","sourceRoot":"","sources":["use-table-virtual.tsx"],"names":[],"mappings":";AAGA,UAAU,oBAAoB;IAC5B,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAC3C,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AACD,QAAA,MAAM,eAAe,UAAW,oBAAoB;;;;;;;oBA+GpC,MAAM;mBACP,MAAM;WACd,MAAM;gBACD,MAAM;kBACJ,OAAO;;0BAtEuB,MAAM,UAAU,MAAM;0BAxBtB,MAAM,QAAQ,MAAM;2BAkInB,MAAM;CAmElD,CAAC;AAEF,eAAe,eAAe,CAAC"}
@@ -4,7 +4,6 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
- var _usePrevious = require("../.../../../common/use-previous");
8
7
  var _usePersistFn = require("../../common/use-persist-fn");
9
8
  var _react = require("react");
10
9
  function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
@@ -34,7 +33,6 @@ var useTableVirtual = function useTableVirtual(props) {
34
33
  _useState8 = _slicedToArray(_useState7, 2),
35
34
  startIndex = _useState8[0],
36
35
  setStartIndex = _useState8[1];
37
- var preIndex = (0, _usePrevious.usePrevious)(startIndex);
38
36
  var _useState9 = (0, _react.useState)(0),
39
37
  _useState10 = _slicedToArray(_useState9, 2),
40
38
  offsetY = _useState10[0],
@@ -47,7 +45,8 @@ var useTableVirtual = function useTableVirtual(props) {
47
45
  rateTimer: null,
48
46
  topTimer: null,
49
47
  controlScrollRate: null,
50
- heightCallback: null
48
+ heightCallback: null,
49
+ preIndex: null
51
50
  }),
52
51
  context = _useRef.current;
53
52
  var getTranslate = (0, _usePersistFn.usePersistFn)(function (left, top) {
@@ -80,6 +79,8 @@ var useTableVirtual = function useTableVirtual(props) {
80
79
  if (context.shouldUpdateHeight) {
81
80
  setHeight(getContentHeight(props.data.length - 1));
82
81
  }
82
+ var preIndex = context.preIndex;
83
+ // 解决: 从下往上滚 由于高度变化会导致滚动条跳动
83
84
  if (preIndex && preIndex > startIndex && startIndex === index) {
84
85
  // 发生在顶部
85
86
  if (context.heightCallback) return;
@@ -184,6 +185,16 @@ var useTableVirtual = function useTableVirtual(props) {
184
185
  props.scrollRef.current.scrollTop = beforeHeight;
185
186
  }
186
187
  });
188
+ (0, _react.useEffect)(function () {
189
+ // 记录preIndex
190
+ context.preIndex = startIndex;
191
+ }, [startIndex]);
192
+ (0, _react.useEffect)(function () {
193
+ // 数据变化的时候清空掉 preIndex, 如果之前有缓存的index, setRowHeight 会有问题
194
+ return function () {
195
+ context.preIndex = null;
196
+ };
197
+ }, [props.data]);
187
198
  (0, _react.useEffect)(function () {
188
199
  if (props.disabled) return;
189
200
  if (offsetY) {
@@ -28,7 +28,7 @@ declare const useButton: (props?: BaseButtonProps) => {
28
28
  buttonRef?: React.Ref<HTMLButtonElement> | undefined;
29
29
  } & TOther_1 & {
30
30
  disabled: boolean | undefined;
31
- htmlType: "button" | "reset" | "submit" | undefined;
31
+ htmlType: "button" | "submit" | "reset" | undefined;
32
32
  onClick: (event: React.MouseEvent<HTMLButtonElement> | React.MouseEvent<HTMLAnchorElement>) => void;
33
33
  };
34
34
  getSpaceChildren: (children: React.ReactNode, space?: boolean, className?: string) => React.ReactNode;
@@ -4,7 +4,7 @@ declare const useDatePickerFormat: <Value extends DatePickerValueType>(props: Us
4
4
  resultArr: (string | undefined)[];
5
5
  targetResultArr: (string | undefined)[];
6
6
  dateArr: (Date | undefined)[];
7
- disabledStatus: "all" | "left" | "right" | undefined;
7
+ disabledStatus: "left" | "right" | "all" | undefined;
8
8
  currentArr: Date[];
9
9
  mode: DatePickerModeType[];
10
10
  isEmpty: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"use-form.d.ts","sourceRoot":"","sources":["use-form.ts"],"names":[],"mappings":";AAwBA,OAAO,EAAe,aAAa,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAC7F,OAAO,EAAe,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAI5D,QAAA,MAAM,OAAO;;;;;;;;;wBAgK8B;gBAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;aAAE;8BARzB,MAAM;oCAuDD,OAAO;;6BAfb,MAAM,KAAK,KAAK,GAAG,SAAS;;oCAdrB,MAAM,EAAE;sCArEN,MAAM,GAAG,MAAM,EAAE,mBAAgB,QAAQ,IAAI,CAAC;qCAiI5D,MAAM;gCAzCE,MAAM,SAAS,MAAM,UAAU,KAAK;gCAKpC,MAAM,SAAS,MAAM;;;;;;oBA1CpB;YAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;SAAE;0BARzB,MAAM;gCAuDD,OAAO;;yBAfb,MAAM,KAAK,KAAK,GAAG,SAAS;;gCAdrB,MAAM,EAAE;kCArEN,MAAM,GAAG,MAAM,EAAE,mBAAgB,QAAQ,IAAI,CAAC;iCAiI5D,MAAM;4BAzCE,MAAM,SAAS,MAAM,UAAU,KAAK;4BAKpC,MAAM,SAAS,MAAM;;CA6P9D,CAAC;AAEF,eAAe,OAAO,CAAC"}
1
+ {"version":3,"file":"use-form.d.ts","sourceRoot":"","sources":["use-form.ts"],"names":[],"mappings":";AAyBA,OAAO,EAAe,aAAa,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAC7F,OAAO,EAAe,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAI5D,QAAA,MAAM,OAAO;;;;;;;;;wBAmK8B;gBAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;aAAE;8BARzB,MAAM;oCAuDD,OAAO;;6BAfb,MAAM,KAAK,KAAK,GAAG,SAAS;;oCAdrB,MAAM,EAAE;sCArEN,MAAM,GAAG,MAAM,EAAE,mBAAgB,QAAQ,IAAI,CAAC;qCAiI5D,MAAM;gCAzCE,MAAM,SAAS,MAAM,UAAU,KAAK;gCAKpC,MAAM,SAAS,MAAM;;;;;;oBA1CpB;YAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;SAAE;0BARzB,MAAM;gCAuDD,OAAO;;yBAfb,MAAM,KAAK,KAAK,GAAG,SAAS;;gCAdrB,MAAM,EAAE;kCArEN,MAAM,GAAG,MAAM,EAAE,mBAAgB,QAAQ,IAAI,CAAC;iCAiI5D,MAAM;4BAzCE,MAAM,SAAS,MAAM,UAAU,KAAK;4BAKpC,MAAM,SAAS,MAAM;;CA4P9D,CAAC;AAEF,eAAe,OAAO,CAAC"}
@@ -13,6 +13,7 @@ import useLatestObj from "../../common/use-latest-obj";
13
13
  import usePersistFn from "../../common/use-persist-fn";
14
14
  import { getDataAttributeName } from "../../utils/attribute";
15
15
  import { insertValue, spliceValue } from "../../utils/flat";
16
+ import { usePrevious } from "../../common/use-default-value";
16
17
  var globalKey = '__global__&&@@';
17
18
  import { current, produce } from "../../utils/immer";
18
19
  import { deepGet, deepRemove, deepSet, docScroll, extractEventHandlers, isArray, isObject, shallowEqual, wrapFormError, deepClone } from "../../utils";
@@ -40,6 +41,7 @@ var useForm = function useForm(props) {
40
41
  removeUndefined: removeUndefined,
41
42
  forceSet: true
42
43
  };
44
+ var preValue = usePrevious(props.value);
43
45
  var formRef = React.useRef();
44
46
  var _React$useRef = React.useRef({
45
47
  defaultValues: {},
@@ -410,8 +412,8 @@ var useForm = function useForm(props) {
410
412
  var updateValue = function updateValue() {
411
413
  if (props.value !== context.lastValue && props.value !== context.value) {
412
414
  context.value = deepClone(props.value) || emptyObj;
413
- context.lastValue = props.value;
414
415
  }
416
+ context.lastValue = props.value;
415
417
  };
416
418
  updateValue();
417
419
  React.useEffect(function () {
@@ -434,14 +436,13 @@ var useForm = function useForm(props) {
434
436
  if (props.value === context.value) return;
435
437
  if (initValidate && !context.resetTime) {
436
438
  var keys = Object.keys(context.validateMap).filter(function (key) {
437
- var oldValue = deepGet(context.lastValue || emptyObj, key);
439
+ var oldValue = deepGet(preValue || emptyObj, key);
438
440
  var newValue = deepGet(context.value || emptyObj, key);
439
441
  return !shallowEqual(oldValue, newValue);
440
442
  });
441
443
  validateFields(keys).catch(function () {});
442
444
  }
443
445
  update();
444
- context.lastValue = props.value;
445
446
  context.resetTime = 0;
446
447
  }, [props.value]);
447
448
  React.useEffect(function () {
@@ -10,7 +10,7 @@ declare const useImage: (props?: BaseImageProps) => {
10
10
  getRootProps: <TOther extends ObjectType = ObjectType>(externalProps?: TOther) => {
11
11
  [x: string]: (event: any) => void;
12
12
  } & TOther & {
13
- ref: React.RefObject<HTMLDivElement | HTMLAnchorElement>;
13
+ ref: React.RefObject<HTMLAnchorElement | HTMLDivElement>;
14
14
  onClick: (event: React.MouseEvent<HTMLImageElement | HTMLDivElement>) => void;
15
15
  };
16
16
  getImageProps: <TOther_1 extends ObjectType = ObjectType>(externalProps?: TOther_1) => {
@@ -1 +1 @@
1
- {"version":3,"file":"use-table-virtual.d.ts","sourceRoot":"","sources":["use-table-virtual.tsx"],"names":[],"mappings":";AAIA,UAAU,oBAAoB;IAC5B,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAC3C,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AACD,QAAA,MAAM,eAAe,UAAW,oBAAoB;;;;;;;oBA6GpC,MAAM;mBACP,MAAM;WACd,MAAM;gBACD,MAAM;kBACJ,OAAO;;0BApEuB,MAAM,UAAU,MAAM;0BAxBtB,MAAM,QAAQ,MAAM;2BAgInB,MAAM;CAwDlD,CAAC;AAEF,eAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"use-table-virtual.d.ts","sourceRoot":"","sources":["use-table-virtual.tsx"],"names":[],"mappings":";AAGA,UAAU,oBAAoB;IAC5B,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAC3C,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AACD,QAAA,MAAM,eAAe,UAAW,oBAAoB;;;;;;;oBA+GpC,MAAM;mBACP,MAAM;WACd,MAAM;gBACD,MAAM;kBACJ,OAAO;;0BAtEuB,MAAM,UAAU,MAAM;0BAxBtB,MAAM,QAAQ,MAAM;2BAkInB,MAAM;CAmElD,CAAC;AAEF,eAAe,eAAe,CAAC"}
@@ -8,7 +8,6 @@ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o =
8
8
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
9
9
  function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
10
10
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
11
- import { usePrevious } from "../.../../../common/use-previous";
12
11
  import { usePersistFn } from "../../common/use-persist-fn";
13
12
  import { useState, useRef, useEffect } from 'react';
14
13
  var useTableVirtual = function useTableVirtual(props) {
@@ -28,7 +27,6 @@ var useTableVirtual = function useTableVirtual(props) {
28
27
  _useState8 = _slicedToArray(_useState7, 2),
29
28
  startIndex = _useState8[0],
30
29
  setStartIndex = _useState8[1];
31
- var preIndex = usePrevious(startIndex);
32
30
  var _useState9 = useState(0),
33
31
  _useState10 = _slicedToArray(_useState9, 2),
34
32
  offsetY = _useState10[0],
@@ -41,7 +39,8 @@ var useTableVirtual = function useTableVirtual(props) {
41
39
  rateTimer: null,
42
40
  topTimer: null,
43
41
  controlScrollRate: null,
44
- heightCallback: null
42
+ heightCallback: null,
43
+ preIndex: null
45
44
  }),
46
45
  context = _useRef.current;
47
46
  var getTranslate = usePersistFn(function (left, top) {
@@ -74,6 +73,8 @@ var useTableVirtual = function useTableVirtual(props) {
74
73
  if (context.shouldUpdateHeight) {
75
74
  setHeight(getContentHeight(props.data.length - 1));
76
75
  }
76
+ var preIndex = context.preIndex;
77
+ // 解决: 从下往上滚 由于高度变化会导致滚动条跳动
77
78
  if (preIndex && preIndex > startIndex && startIndex === index) {
78
79
  // 发生在顶部
79
80
  if (context.heightCallback) return;
@@ -178,6 +179,16 @@ var useTableVirtual = function useTableVirtual(props) {
178
179
  props.scrollRef.current.scrollTop = beforeHeight;
179
180
  }
180
181
  });
182
+ useEffect(function () {
183
+ // 记录preIndex
184
+ context.preIndex = startIndex;
185
+ }, [startIndex]);
186
+ useEffect(function () {
187
+ // 数据变化的时候清空掉 preIndex, 如果之前有缓存的index, setRowHeight 会有问题
188
+ return function () {
189
+ context.preIndex = null;
190
+ };
191
+ }, [props.data]);
181
192
  useEffect(function () {
182
193
  if (props.disabled) return;
183
194
  if (offsetY) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sheinx/hooks",
3
- "version": "3.2.3",
3
+ "version": "3.2.5-beta.1",
4
4
  "description": "",
5
5
  "keywords": [],
6
6
  "license": "MIT",