Skip to content

Commit 16f023f

Browse files
committed
fix(useSetState): memoize setState callback
1 parent c73e92f commit 16f023f

File tree

1 file changed

+7
-4
lines changed

1 file changed

+7
-4
lines changed

src/useSetState.ts

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
1-
import { useState } from 'react';
1+
import { useState, useCallback } from 'react';
22

33
const useSetState = <T extends object>(
44
initialState: T = {} as T
55
): [T, (patch: Partial<T> | ((prevState: T) => Partial<T>)) => void] => {
66
const [state, set] = useState<T>(initialState);
7-
const setState = patch => {
8-
set(prevState => Object.assign({}, prevState, patch instanceof Function ? patch(prevState) : patch));
9-
};
7+
const setState = useCallback(
8+
patch => {
9+
set(prevState => Object.assign({}, prevState, patch instanceof Function ? patch(prevState) : patch));
10+
},
11+
[set]
12+
);
1013

1114
return [state, setState];
1215
};

0 commit comments

Comments
 (0)