Skip to content

Commit

Permalink
fix(table): selection-change not triggered on row click
Browse files Browse the repository at this point in the history
修复selection-change事件在点击行来改变勾选时不会被触发的问题
  • Loading branch information
mynetfan committed Jun 30, 2021
1 parent d509e89 commit 6f845b5
Showing 1 changed file with 19 additions and 8 deletions.
27 changes: 19 additions & 8 deletions src/components/Table/src/hooks/useRowSelection.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { isFunction } from '/@/utils/is';
import type { BasicTableProps, TableRowSelection } from '../types/table';
import { computed, ref, unref, ComputedRef, Ref, toRaw, watch } from 'vue';
import { computed, ref, unref, ComputedRef, Ref, toRaw, watch, nextTick } from 'vue';
import { ROW_KEY } from '../const';
import { omit } from 'lodash-es';

Expand All @@ -24,12 +24,6 @@ export function useRowSelection(
onChange: (selectedRowKeys: string[], selectedRows: Recordable[]) => {
selectedRowKeysRef.value = selectedRowKeys;
selectedRowRef.value = selectedRows;
const { onChange } = rowSelection;
if (onChange && isFunction(onChange)) onChange(selectedRowKeys, selectedRows);
emit('selection-change', {
keys: selectedRowKeys,
rows: selectedRows,
});
},
...omit(rowSelection === undefined ? {} : rowSelection, ['onChange']),
};
Expand All @@ -38,7 +32,24 @@ export function useRowSelection(
watch(
() => unref(propsRef).rowSelection?.selectedRowKeys,
(v: string[]) => {
selectedRowKeysRef.value = v;
setSelectedRowKeys(v);
}
);

watch(
() => unref(selectedRowKeysRef),
() => {
nextTick(() => {
const { rowSelection } = unref(propsRef);
if (rowSelection) {
const { onChange } = rowSelection;
if (onChange && isFunction(onChange)) onChange(getSelectRowKeys(), getSelectRows());
}
emit('selection-change', {
keys: getSelectRowKeys(),
rows: getSelectRows(),
});
});
}
);

Expand Down

0 comments on commit 6f845b5

Please sign in to comment.