diff --git a/src/Table.tsx b/src/Table.tsx index 46051385a..31edce798 100644 --- a/src/Table.tsx +++ b/src/Table.tsx @@ -74,7 +74,7 @@ import Panel from './Panel'; import StickyScrollBar from './stickyScrollBar'; import Column from './sugar/Column'; import ColumnGroup from './sugar/ColumnGroup'; -import { getColumnsKey, validateValue } from './utils/valueUtil'; +import { getColumnsKey, validateValue, validNumberValue } from './utils/valueUtil'; import { getDOM } from 'rc-util/lib/Dom/findDOMNode'; export const DEFAULT_PREFIX = 'rc-table'; @@ -331,12 +331,8 @@ function Table( if (scrollBodyRef.current instanceof HTMLElement) { // Native scroll const { index, top, key } = config; - - // * 考虑top为0的情况 - if (top || top === 0) { - scrollBodyRef.current?.scrollTo({ - top, - }); + if (validNumberValue(top)) { + scrollBodyRef.current?.scrollTo({ top }); } else { const mergedKey = key ?? getRowKey(mergedData[index]); scrollBodyRef.current.querySelector(`[data-row-key="${mergedKey}"]`)?.scrollIntoView(); diff --git a/src/utils/valueUtil.tsx b/src/utils/valueUtil.tsx index 47526c31c..56f6fef4f 100644 --- a/src/utils/valueUtil.tsx +++ b/src/utils/valueUtil.tsx @@ -36,3 +36,7 @@ export function getColumnsKey(columns: readonly GetColumnKeyColumn[] export function validateValue(val: T) { return val !== null && val !== undefined; } + +export function validNumberValue(value: any) { + return typeof value === 'number' && !Number.isNaN(value); +}