Commit 6844f69c2068807eb0bd876d30f7b7de447c841a

Authored by WYH
Committed by GitHub
1 parent 057b8263

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

Co-authored-by: 王一骅 <wangyihua@yazuishou.com>
src/components/Table/src/hooks/useCustomRow.ts
... ... @@ -40,7 +40,7 @@ export function useCustomRow(
40 40 function handleClick() {
41 41 const { rowSelection, rowKey, clickToRowSelect } = unref(propsRef);
42 42 if (!rowSelection || !clickToRowSelect) return;
43   - const keys = getSelectRowKeys();
  43 + const keys = getSelectRowKeys() || [];
44 44 const key = getKey(record, rowKey, unref(getAutoCreateKey));
45 45 if (!key) return;
46 46  
... ...
src/components/Table/src/hooks/useRowSelection.ts
... ... @@ -66,13 +66,13 @@ export function useRowSelection(
66 66 selectedRowKeysRef.value = rowKeys;
67 67 const allSelectedRows = findNodeAll(
68 68 toRaw(unref(tableData)).concat(toRaw(unref(selectedRowRef))),
69   - (item) => rowKeys.includes(item[unref(getRowKey) as string]),
  69 + (item) => rowKeys?.includes(item[unref(getRowKey) as string]),
70 70 {
71 71 children: propsRef.value.childrenColumnName ?? 'children',
72 72 },
73 73 );
74 74 const trueSelectedRows: any[] = [];
75   - rowKeys.forEach((key: string) => {
  75 + rowKeys?.forEach((key: string) => {
76 76 const found = allSelectedRows.find((item) => item[unref(getRowKey) as string] === key);
77 77 found && trueSelectedRows.push(found);
78 78 });
... ...
src/views/demo/table/FormTable.vue
1 1 <template>
2   - <BasicTable
3   - @register="registerTable"
4   - :rowSelection="{ type: 'checkbox', selectedRowKeys: checkedKeys, onChange: onSelectChange }"
5   - >
  2 + <BasicTable @register="registerTable">
6 3 <template #form-custom> custom-slot </template>
7 4 <template #headerTop>
8 5 <a-alert type="info" show-icon>
... ... @@ -44,6 +41,11 @@
44 41 tableSetting: { fullScreen: true },
45 42 showIndexColumn: false,
46 43 rowKey: 'id',
  44 + rowSelection: {
  45 + type: 'checkbox',
  46 + selectedRowKeys: checkedKeys,
  47 + onChange: onSelectChange,
  48 + },
47 49 });
48 50  
49 51 function getFormValues() {
... ...