Skip to content

Commit 5890635

Browse files
committed
Use function form of useState
This change is for consistency and also so that you can modify the selected ids multiple times during the same render and get the expected results.
1 parent f24ea8b commit 5890635

1 file changed

Lines changed: 14 additions & 9 deletions

File tree

src/hooks/useMassSelection.ts

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -23,21 +23,26 @@ export const useMassSelection = (idsList: string[]): UseMassSelectionResult => {
2323
}, [idsList]);
2424

2525
const toggleSelectionById = (id: string) => {
26-
if (ids.includes(id)) {
27-
setIds((previousIds) =>
28-
previousIds.filter((selectedIds) => selectedIds !== id),
29-
);
30-
} else {
31-
setIds((previousIds) => [...previousIds, id]);
32-
}
26+
setIds((previousIds) => {
27+
if (previousIds.includes(id)) {
28+
return previousIds.filter((selectedIds) => selectedIds !== id);
29+
} else {
30+
return [...previousIds, id];
31+
}
32+
});
3333
};
3434

3535
const selectMultipleIds = (newIds: string[]) => {
36-
setIds([...ids, ...newIds.filter((newId) => !ids.includes(newId))]);
36+
setIds((previousIds) => [
37+
...previousIds,
38+
...newIds.filter((newId) => !ids.includes(newId)),
39+
]);
3740
};
3841

3942
const deselectMultipleIds = (idsToRemove: string[]) => {
40-
setIds(ids.filter((id) => !idsToRemove.includes(id)));
43+
setIds((previousIds) =>
44+
previousIds.filter((id) => !idsToRemove.includes(id)),
45+
);
4146
};
4247

4348
const deselectAll = () => {

0 commit comments

Comments
 (0)