Commit df0f00085c1113eddd7a15954818ccece3538068

Authored by 无木
1 parent 99829c79

fix(table): fix rowSelection.onChange not work

修复为table提供rowSelection.onChange时,无法手动变更table的选中项的问题

fixed: #825
src/components/Table/src/hooks/useRowSelection.ts
  1 +import { isFunction } from '/@/utils/is';
1 import type { BasicTableProps, TableRowSelection } from '../types/table'; 2 import type { BasicTableProps, TableRowSelection } from '../types/table';
2 -import { computed, ref, unref, ComputedRef, Ref, toRaw } from 'vue'; 3 +import { computed, ref, unref, ComputedRef, Ref, toRaw, watch } from 'vue';
3 import { ROW_KEY } from '../const'; 4 import { ROW_KEY } from '../const';
  5 +import { omit } from 'lodash-es';
4 6
5 export function useRowSelection( 7 export function useRowSelection(
6 propsRef: ComputedRef<BasicTableProps>, 8 propsRef: ComputedRef<BasicTableProps>,
@@ -22,15 +24,24 @@ export function useRowSelection( @@ -22,15 +24,24 @@ export function useRowSelection(
22 onChange: (selectedRowKeys: string[], selectedRows: Recordable[]) => { 24 onChange: (selectedRowKeys: string[], selectedRows: Recordable[]) => {
23 selectedRowKeysRef.value = selectedRowKeys; 25 selectedRowKeysRef.value = selectedRowKeys;
24 selectedRowRef.value = selectedRows; 26 selectedRowRef.value = selectedRows;
  27 + const { onChange } = rowSelection;
  28 + if (onChange && isFunction(onChange)) onChange(selectedRowKeys, selectedRows);
25 emit('selection-change', { 29 emit('selection-change', {
26 keys: selectedRowKeys, 30 keys: selectedRowKeys,
27 rows: selectedRows, 31 rows: selectedRows,
28 }); 32 });
29 }, 33 },
30 - ...(rowSelection === undefined ? {} : rowSelection), 34 + ...omit(rowSelection === undefined ? {} : rowSelection, ['onChange']),
31 }; 35 };
32 }); 36 });
33 37
  38 + watch(
  39 + () => unref(propsRef).rowSelection?.selectedRowKeys,
  40 + (v: string[]) => {
  41 + selectedRowKeysRef.value = v;
  42 + }
  43 + );
  44 +
34 const getAutoCreateKey = computed(() => { 45 const getAutoCreateKey = computed(() => {
35 return unref(propsRef).autoCreateKey && !unref(propsRef).rowKey; 46 return unref(propsRef).autoCreateKey && !unref(propsRef).rowKey;
36 }); 47 });