diff --git a/components/legacy-table/src/TableRow.jsx b/components/legacy-table/src/TableRow.jsx index 04ee479bd..91318061b 100644 --- a/components/legacy-table/src/TableRow.jsx +++ b/components/legacy-table/src/TableRow.jsx @@ -3,7 +3,6 @@ import PropTypes, { withUndefined } from '../../_util/vue-types'; import TableCell from './TableCell'; import { initDefaultProps, findDOMNode } from '../../_util/props-util'; import BaseMixin from '../../_util/BaseMixin'; -import warning from '../../_util/warning'; import { computed, inject } from 'vue'; function noop() {} const TableRow = { diff --git a/components/table/Table.tsx b/components/table/Table.tsx index 31f0efb34..2462729b5 100644 --- a/components/table/Table.tsx +++ b/components/table/Table.tsx @@ -35,7 +35,8 @@ import defaultLocale from '../locale/en_US'; import type { SizeType } from '../config-provider'; import devWarning from '../vc-util/devWarning'; import type { PropType } from 'vue'; -import { computed, defineComponent, ref, toRef, watchEffect } from 'vue'; +import { reactive } from 'vue'; +import { computed, defineComponent, toRef, watchEffect } from 'vue'; import type { DefaultRecordType } from '../vc-table/interface'; import useBreakpoint from '../_util/hooks/useBreakpoint'; import useConfigInject from '../_util/hooks/useConfigInject'; @@ -43,7 +44,8 @@ import { useLocaleReceiver } from '../locale-provider/LocaleReceiver'; import classNames from '../_util/classNames'; import omit from '../_util/omit'; import { initDefaultProps } from '../_util/props-util'; -import { ContextSlots, useProvideSlots } from './context'; +import { useProvideSlots } from './context'; +import type { ContextSlots } from './context'; import useColumns from './hooks/useColumns'; import { convertChildrenToColumns } from './util'; @@ -77,6 +79,7 @@ export interface TableProps | 'scroll' | 'emptyText' | 'canExpandable' + | 'onUpdateInternalRefs' > { dropdownPrefixCls?: string; dataSource?: RcTableProps['data']; @@ -217,11 +220,11 @@ const InteralTable = defineComponent< } >({ name: 'InteralTable', + inheritAttrs: false, props: initDefaultProps(tableProps(), { rowKey: 'key', }) as any, - inheritAttrs: false, - emits: [], + // emits: ['expandedRowsChange', 'change', 'expand'], slots: [ 'emptyText', 'expandIcon', @@ -282,8 +285,12 @@ const InteralTable = defineComponent< return null; }); - const internalRefs = { - body: ref(), + const internalRefs = reactive({ + body: null, + }); + + const updateInternalRefs = refs => { + Object.assign(internalRefs, refs); }; // ============================ RowKey ============================ @@ -325,9 +332,9 @@ const InteralTable = defineComponent< } } - if (scroll && scroll.scrollToFirstRowOnChange !== false && internalRefs.body.value) { + if (scroll && scroll.scrollToFirstRowOnChange !== false && internalRefs.body) { scrollTo(0, { - getContainer: () => internalRefs.body.value!, + getContainer: () => internalRefs.body, }); } @@ -606,7 +613,8 @@ const InteralTable = defineComponent< rowClassName={internalRowClassName} // Internal internalHooks={INTERNAL_HOOKS} - internalRefs={internalRefs as any} + internalRefs={internalRefs} + onUpdateInternalRefs={updateInternalRefs} transformColumns={transformColumns} v-slots={{ ...slots, diff --git a/components/table/demo/fixed-columns.vue b/components/table/demo/fixed-columns.vue index 3e679a5a0..5ea725e22 100644 --- a/components/table/demo/fixed-columns.vue +++ b/components/table/demo/fixed-columns.vue @@ -25,7 +25,7 @@ To fix some columns and scroll inside other columns, and you must set `scroll.x`