无木
2021-06-30 6f845b53bdc4c33fbca3e65f10f64c63166bed0e
fix(table): selection-change not triggered on row click

修复selection-change事件在点击行来改变勾选时不会被触发的问题
1个文件已修改
27 ■■■■ 已修改文件
src/components/Table/src/hooks/useRowSelection.ts 27 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/Table/src/hooks/useRowSelection.ts
@@ -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';
@@ -24,12 +24,6 @@
      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']),
    };
@@ -38,7 +32,24 @@
  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(),
        });
      });
    }
  );