提交 6f845b53 编写于 作者: 无木

fix(table): selection-change not triggered on row click

修复selection-change事件在点击行来改变勾选时不会被触发的问题
上级 d509e897
import { isFunction } from '/@/utils/is'; import { isFunction } from '/@/utils/is';
import type { BasicTableProps, TableRowSelection } from '../types/table'; 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 { ROW_KEY } from '../const';
import { omit } from 'lodash-es'; import { omit } from 'lodash-es';
...@@ -24,12 +24,6 @@ export function useRowSelection( ...@@ -24,12 +24,6 @@ export function useRowSelection(
onChange: (selectedRowKeys: string[], selectedRows: Recordable[]) => { onChange: (selectedRowKeys: string[], selectedRows: Recordable[]) => {
selectedRowKeysRef.value = selectedRowKeys; selectedRowKeysRef.value = selectedRowKeys;
selectedRowRef.value = selectedRows; 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']), ...omit(rowSelection === undefined ? {} : rowSelection, ['onChange']),
}; };
...@@ -38,7 +32,24 @@ export function useRowSelection( ...@@ -38,7 +32,24 @@ export function useRowSelection(
watch( watch(
() => unref(propsRef).rowSelection?.selectedRowKeys, () => unref(propsRef).rowSelection?.selectedRowKeys,
(v: string[]) => { (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(),
});
});
} }
); );
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册