From ed3eda8e03671a79491321f5d66d7a3fb995621d Mon Sep 17 00:00:00 2001 From: maxiaokai1996 <2425229626@qq.com> Date: Tue, 22 Oct 2024 11:54:08 +0800 Subject: [PATCH] fix: extract common function for set operations --- packages/hooks/src/useSet/index.ts | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/packages/hooks/src/useSet/index.ts b/packages/hooks/src/useSet/index.ts index 59f18debcb..894a28e8ad 100644 --- a/packages/hooks/src/useSet/index.ts +++ b/packages/hooks/src/useSet/index.ts @@ -5,14 +5,17 @@ function useSet(initialValue?: Iterable) { const getInitValue = () => new Set(initialValue); const [set, setSet] = useState>(getInitValue); + const updateSet = (updater: (set: Set) => Set) => { + setSet((prevSet) => updater(new Set(prevSet))); + }; + const add = (key: K) => { if (set.has(key)) { return; } - setSet((prevSet) => { - const temp = new Set(prevSet); - temp.add(key); - return temp; + updateSet((newSet) => { + newSet.add(key); + return newSet; }); }; @@ -20,10 +23,9 @@ function useSet(initialValue?: Iterable) { if (!set.has(key)) { return; } - setSet((prevSet) => { - const temp = new Set(prevSet); - temp.delete(key); - return temp; + updateSet((newSet) => { + newSet.delete(key); + return newSet; }); };