From 4faf47ad76b90db4cbf2da295c744c1ec4186a99 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E6=B8=85=E5=B1=B1?= <576222103@qq.com> Date: Fri, 23 Dec 2022 10:10:10 +0800 Subject: [PATCH] fix(antd/transfer): transKeys Map Structure Adjustment --- components/_util/transKeys.ts | 23 +++++++---------------- components/transfer/index.tsx | 10 +++++----- components/transfer/list.tsx | 4 ++-- 3 files changed, 14 insertions(+), 23 deletions(-) diff --git a/components/_util/transKeys.ts b/components/_util/transKeys.ts index 9dbfec5977d1..24e48be2c80c 100644 --- a/components/_util/transKeys.ts +++ b/components/_util/transKeys.ts @@ -1,24 +1,15 @@ -export type mapItem = { - k: string; - i: number; -}; -export type MapType = Record; - export const groupKeysMap = (keys: string[]) => { - const map: MapType = {}; - keys.forEach((k, i) => { - map[k] = { k, i }; + const map = new Map(); + keys.forEach((key, index) => { + map.set(key, index); }); return map; }; export const groupDisabledKeysMap = (dataSource: RecordType) => { - const map: MapType = {}; - dataSource.forEach((d, i) => { - if (d.disabled) { - map[d.key] = { - k: d.key, - i, - }; + const map = new Map(); + dataSource.forEach(({ disabled, key }, index) => { + if (disabled) { + map.set(key, index); } }); return map; diff --git a/components/transfer/index.tsx b/components/transfer/index.tsx index 8b6e1b187eb1..83fcfb8b0ba1 100644 --- a/components/transfer/index.tsx +++ b/components/transfer/index.tsx @@ -207,13 +207,13 @@ class Transfer extends React.Com const dataSourceDisabledKeysMap = groupDisabledKeysMap(dataSource); // filter the disabled options - const newMoveKeys = moveKeys.filter((key) => !dataSourceDisabledKeysMap[key]); + const newMoveKeys = moveKeys.filter((key) => !dataSourceDisabledKeysMap.has(key)); const newMoveKeysMap = groupKeysMap(newMoveKeys); // move items to target box const newTargetKeys = direction === 'right' ? newMoveKeys.concat(targetKeys) - : targetKeys.filter((targetKey) => !newMoveKeysMap[targetKey]); + : targetKeys.filter((targetKey) => !newMoveKeysMap.has(targetKey)); // empty checked keys const oppositeDirection = direction === 'right' ? 'left' : 'right'; @@ -236,7 +236,7 @@ class Transfer extends React.Com } else { const selectedKeysMap = groupKeysMap(selectedKeys); // Remove current keys from origin keys - mergedCheckedKeys = prevKeys.filter((key) => !selectedKeysMap[key]); + mergedCheckedKeys = prevKeys.filter((key) => !selectedKeysMap.has(key)); } this.handleSelectChange(direction, mergedCheckedKeys); @@ -354,8 +354,8 @@ class Transfer extends React.Com } // rightDataSource should be ordered by targetKeys // leftDataSource should be ordered by dataSource - if (targetKeysMap[record.key]) { - rightDataSource[targetKeysMap[record.key].i] = record; + if (targetKeysMap.has(record.key)) { + rightDataSource[targetKeysMap.get(record.key)!] = record; } else { leftDataSource.push(record); } diff --git a/components/transfer/list.tsx b/components/transfer/list.tsx index 4a6bcf590a46..6e62cae74b93 100644 --- a/components/transfer/list.tsx +++ b/components/transfer/list.tsx @@ -104,8 +104,8 @@ export default class TransferList< if (checkedKeys.length === 0) { return 'none'; } - const keysMap = groupKeysMap(checkedKeys); - if (filteredItems.every((item) => keysMap[item.key] || !!item.disabled)) { + const checkedKeysMap = groupKeysMap(checkedKeys); + if (filteredItems.every((item) => checkedKeysMap.has(item.key) || !!item.disabled)) { return 'all'; } return 'part';