瀏覽代碼

fix: 修复demo中formTable几个空指针报错和selectedRowKeys丢失响应式的问题 (#2386)

Co-authored-by: 王一骅 <wangyihua@yazuishou.com>
WYH 2 年之前
父節點
當前提交
6844f69c20

+ 1 - 1
src/components/Table/src/hooks/useCustomRow.ts

@@ -40,7 +40,7 @@ export function useCustomRow(
         function handleClick() {
           const { rowSelection, rowKey, clickToRowSelect } = unref(propsRef);
           if (!rowSelection || !clickToRowSelect) return;
-          const keys = getSelectRowKeys();
+          const keys = getSelectRowKeys() || [];
           const key = getKey(record, rowKey, unref(getAutoCreateKey));
           if (!key) return;
 

+ 2 - 2
src/components/Table/src/hooks/useRowSelection.ts

@@ -66,13 +66,13 @@ export function useRowSelection(
     selectedRowKeysRef.value = rowKeys;
     const allSelectedRows = findNodeAll(
       toRaw(unref(tableData)).concat(toRaw(unref(selectedRowRef))),
-      (item) => rowKeys.includes(item[unref(getRowKey) as string]),
+      (item) => rowKeys?.includes(item[unref(getRowKey) as string]),
       {
         children: propsRef.value.childrenColumnName ?? 'children',
       },
     );
     const trueSelectedRows: any[] = [];
-    rowKeys.forEach((key: string) => {
+    rowKeys?.forEach((key: string) => {
       const found = allSelectedRows.find((item) => item[unref(getRowKey) as string] === key);
       found && trueSelectedRows.push(found);
     });

+ 6 - 4
src/views/demo/table/FormTable.vue

@@ -1,8 +1,5 @@
 <template>
-  <BasicTable
-    @register="registerTable"
-    :rowSelection="{ type: 'checkbox', selectedRowKeys: checkedKeys, onChange: onSelectChange }"
-  >
+  <BasicTable @register="registerTable">
     <template #form-custom> custom-slot </template>
     <template #headerTop>
       <a-alert type="info" show-icon>
@@ -44,6 +41,11 @@
         tableSetting: { fullScreen: true },
         showIndexColumn: false,
         rowKey: 'id',
+        rowSelection: {
+          type: 'checkbox',
+          selectedRowKeys: checkedKeys,
+          onChange: onSelectChange,
+        },
       });
 
       function getFormValues() {