From df0f00085c1113eddd7a15954818ccece3538068 Mon Sep 17 00:00:00 2001
From: 无木 <netfan@foxmail.com>
Date: 星期二, 29 六月 2021 16:39:47 +0800
Subject: [PATCH] fix(table): fix rowSelection.onChange not work

---
 src/components/Table/src/hooks/useRowSelection.ts |   15 +++++++++++++--
 1 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/src/components/Table/src/hooks/useRowSelection.ts b/src/components/Table/src/hooks/useRowSelection.ts
index af374dc..63f90ed 100644
--- a/src/components/Table/src/hooks/useRowSelection.ts
+++ b/src/components/Table/src/hooks/useRowSelection.ts
@@ -1,6 +1,8 @@
+import { isFunction } from '/@/utils/is';
 import type { BasicTableProps, TableRowSelection } from '../types/table';
-import { computed, ref, unref, ComputedRef, Ref, toRaw } from 'vue';
+import { computed, ref, unref, ComputedRef, Ref, toRaw, watch } from 'vue';
 import { ROW_KEY } from '../const';
+import { omit } from 'lodash-es';
 
 export function useRowSelection(
   propsRef: ComputedRef<BasicTableProps>,
@@ -22,15 +24,24 @@
       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,
         });
       },
-      ...(rowSelection === undefined ? {} : rowSelection),
+      ...omit(rowSelection === undefined ? {} : rowSelection, ['onChange']),
     };
   });
 
+  watch(
+    () => unref(propsRef).rowSelection?.selectedRowKeys,
+    (v: string[]) => {
+      selectedRowKeysRef.value = v;
+    }
+  );
+
   const getAutoCreateKey = computed(() => {
     return unref(propsRef).autoCreateKey && !unref(propsRef).rowKey;
   });

--
Gitblit v1.8.0