From 9870229ac9db0ea443025046107e7e21ada918d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?w=C5=AB=20y=C4=81ng?= Date: Mon, 21 Aug 2023 18:22:13 +0800 Subject: [PATCH] fix(Select): improve performance when filtering options (#2722) * fix(Select): improve performance when filtering options Co-authored-by: moonye6 <464461539@qq.com> * chore: update snapshot --------- Co-authored-by: moonye6 <464461539@qq.com> --- src/select/_example/virtual-scroll.vue | 1 + src/select/util.ts | 10 ++++------ test/snap/__snapshots__/csr.test.js.snap | 5 ++--- test/snap/__snapshots__/ssr.test.js.snap | 2 +- 4 files changed, 8 insertions(+), 10 deletions(-) diff --git a/src/select/_example/virtual-scroll.vue b/src/select/_example/virtual-scroll.vue index 9071a9bcc..5c305e28e 100644 --- a/src/select/_example/virtual-scroll.vue +++ b/src/select/_example/virtual-scroll.vue @@ -4,6 +4,7 @@ options.filter((option) => !option.disabled && !option.checkAll); /** 将 options 扁平化,拍扁所有 group */ -export const flattenOptions = (options: (TdOptionProps & { isCreated?: boolean })[]): SelectOption[] => options.reduce( - (pre, current) => pre.concat( - (current as SelectOptionGroup).group ? flattenOptions((current as SelectOptionGroup).children) : current, - ), - [] as SelectOption[], -); +export const flattenOptions = (options: (TdOptionProps & { isCreated?: boolean })[]): SelectOption[] => options.reduce((acc, current) => { + acc.push((current as SelectOptionGroup).group ? flattenOptions((current as SelectOptionGroup).children) : current); + return acc; +}, [] as SelectOption[]); diff --git a/test/snap/__snapshots__/csr.test.js.snap b/test/snap/__snapshots__/csr.test.js.snap index 7f5393f8d..110f25b68 100644 --- a/test/snap/__snapshots__/csr.test.js.snap +++ b/test/snap/__snapshots__/csr.test.js.snap @@ -86682,7 +86682,7 @@ exports[`csr snapshot test > csr test ./src/select/_example/virtual-scroll.vue 1 class="t-input__wrap" >
csr test ./src/select/_example/virtual-scroll.vue 1 autocomplete="" class="t-input__inner" placeholder="请选择" - readonly="readonly" type="text" - unselectable="on" + unselectable="off" /> renders ./src/select/_example/size.vue correctly 1` exports[`ssr snapshot test > renders ./src/select/_example/status.vue correctly 1`] = `"
"`; -exports[`ssr snapshot test > renders ./src/select/_example/virtual-scroll.vue correctly 1`] = `"
"`; +exports[`ssr snapshot test > renders ./src/select/_example/virtual-scroll.vue correctly 1`] = `"
"`; exports[`ssr snapshot test > renders ./src/select-input/_example/autocomplete.vue correctly 1`] = `"
"`;