From 8cc7d032aff1aa62099e71e2e1a3ca3a9a226e30 Mon Sep 17 00:00:00 2001 From: zhouyun1 Date: Mon, 26 Feb 2024 20:05:45 +0800 Subject: [PATCH] =?UTF-8?q?fix(check-cascader):=20=E4=BF=AE=E5=A4=8D=20PAR?= =?UTF-8?q?ENT=20=E5=92=8C=20CHILD=20=E6=A8=A1=E5=BC=8F=E5=9C=A8=E6=90=9C?= =?UTF-8?q?=E7=B4=A2=E5=9C=BA=E6=99=AF=E4=B8=8B=20id=20=E4=B8=A2=E5=A4=B1?= =?UTF-8?q?=E9=97=AE=E9=A2=98=20(#2750)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .changeset/lucky-dots-speak.md | 5 +++++ .changeset/thin-vans-float.md | 5 +++++ packages/ui/check-cascader/src/hooks/use-check.ts | 4 +++- 3 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 .changeset/lucky-dots-speak.md create mode 100644 .changeset/thin-vans-float.md diff --git a/.changeset/lucky-dots-speak.md b/.changeset/lucky-dots-speak.md new file mode 100644 index 000000000..b83c8dfa4 --- /dev/null +++ b/.changeset/lucky-dots-speak.md @@ -0,0 +1,5 @@ +--- +"@hi-ui/check-cascader": patch +--- + +fix: 修复 PARENT 和 CHILD 模式在搜索场景下 id 丢失问题 diff --git a/.changeset/thin-vans-float.md b/.changeset/thin-vans-float.md new file mode 100644 index 000000000..51fb06f6c --- /dev/null +++ b/.changeset/thin-vans-float.md @@ -0,0 +1,5 @@ +--- +"@hi-ui/hiui": patch +--- + +fix(check-cascader): 修复 PARENT 和 CHILD 模式在搜索场景下 id 丢失问题 diff --git a/packages/ui/check-cascader/src/hooks/use-check.ts b/packages/ui/check-cascader/src/hooks/use-check.ts index 1475198a5..11e59773c 100644 --- a/packages/ui/check-cascader/src/hooks/use-check.ts +++ b/packages/ui/check-cascader/src/hooks/use-check.ts @@ -32,6 +32,8 @@ export const useCheck = ( // 入口数据处理 const parsedCheckedIds = parseCheckDataDirty(checkedMode, checkedIds, flattedData, allowCheck) + // 合并 checkedIds,防止部分模式(PARENT和CHILD)在搜索场景下 id 丢失 (https://github.com/XiaoMi/hiui/issues/2750) + const mergedCheckedIds = Array.from(new Set([...parsedCheckedIds, ...checkedIds])) const cascaded = checkedMode !== 'SEPARATE' @@ -39,7 +41,7 @@ export const useCheck = ( cascaded, disabled, flattedData, - checkedIds: parsedCheckedIds, + checkedIds: mergedCheckedIds, onCheck: (checkedIds, checkedNode, shouldChecked, semiCheckedIds) => { // 出口数据处理 const processedIds = processCheckedIds(checkedMode, checkedIds, flattedData, allowCheck)