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; }); };