diff --git a/packages/react-transfer/README.md b/packages/react-transfer/README.md index c0967e5d75..46af532111 100644 --- a/packages/react-transfer/README.md +++ b/packages/react-transfer/README.md @@ -57,7 +57,7 @@ function Demo() { label: '武汉市', key: 1, children: [ - { label: '新洲区', key: 2, disabled: true }, + { label: '新洲区', key: 2 }, { label: '武昌区', key: 3 }, { label: '汉南区', @@ -72,7 +72,7 @@ function Demo() { } ]; - const [value,valueSet] = React.useState([{ label: '武汉市', key: 1 }, { label: '汉南区1', key: 5 }]) + const [value,valueSet] = React.useState([{ label: '武昌区', key: 3 }, { label: '汉南区1', key: 5 }]) return ( diff --git a/packages/react-transfer/src/index.tsx b/packages/react-transfer/src/index.tsx index cad5a1cf0b..c4ee86195b 100644 --- a/packages/react-transfer/src/index.tsx +++ b/packages/react-transfer/src/index.tsx @@ -102,7 +102,9 @@ function Transfer(props: TransferProps) { }; const iteratorParent = (child: TreeData) => { if (child.parent) { - const selectCount = child.parent.children.filter((child: TreeData) => !selectOption.get(child.key!)).length; + const selectCount = child.parent.children.filter( + (child: TreeData) => !selectOption.get(child.key!) && !child.hideNode, + ).length; addOrDel(child.parent.key, child.parent.label, selectCount === 0); iteratorParent(child.parent); } @@ -188,11 +190,10 @@ function Transfer(props: TransferProps) { selectedOptions.forEach((child) => { if (child.children?.length) { selectedOptionsRecursion(child.children); - } else { - if (!child.hideNode) { - selectOption.set(child.key!, child.label as string); - keys.push(child.key!); - } + } + if (!child.hideNode) { + selectOption.set(child.key!, child.label as string); + keys.push(child.key!); } }); }; diff --git a/packages/react-tree/src/index.tsx b/packages/react-tree/src/index.tsx index e105ebcef2..8d4ddfe62b 100644 --- a/packages/react-tree/src/index.tsx +++ b/packages/react-tree/src/index.tsx @@ -78,7 +78,9 @@ export const getChildKeys = ( depth?: number, ): TreeData['key'][] => { childs.forEach((item) => { - result.push(item.key as string | number); + if (!item.hideNode) { + result.push(item.key as string | number); + } if (typeof depth === 'number' && !(depth - 1)) return; if (item.children && item.children.length > 0) {