Skip to content

Commit 4c6c76f

Browse files
committed
2 parents ebd59b0 + 0078f68 commit 4c6c76f

File tree

2 files changed

+15
-13
lines changed

2 files changed

+15
-13
lines changed

packages/hooks/src/useSet/index.ts

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,25 +5,27 @@ function useSet<K>(initialValue?: Iterable<K>) {
55
const getInitValue = () => new Set(initialValue);
66
const [set, setSet] = useState<Set<K>>(getInitValue);
77

8+
const updateSet = (updater: (set: Set<K>) => Set<K>) => {
9+
setSet((prevSet) => updater(new Set(prevSet)));
10+
};
11+
812
const add = (key: K) => {
913
if (set.has(key)) {
1014
return;
1115
}
12-
setSet((prevSet) => {
13-
const temp = new Set(prevSet);
14-
temp.add(key);
15-
return temp;
16+
updateSet((newSet) => {
17+
newSet.add(key);
18+
return newSet;
1619
});
1720
};
1821

1922
const remove = (key: K) => {
2023
if (!set.has(key)) {
2124
return;
2225
}
23-
setSet((prevSet) => {
24-
const temp = new Set(prevSet);
25-
temp.delete(key);
26-
return temp;
26+
updateSet((newSet) => {
27+
newSet.delete(key);
28+
return newSet;
2729
});
2830
};
2931

packages/hooks/src/useWebSocket/index.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -43,20 +43,20 @@ function useWebSocket(socketUrl: string, options: Options = {}): Result {
4343
protocols,
4444
} = options;
4545

46+
const [latestMessage, setLatestMessage] = useState<WebSocketEventMap['message']>();
47+
const [readyState, setReadyState] = useState<ReadyState>(ReadyState.Closed);
48+
4649
const onOpenRef = useLatest(onOpen);
4750
const onCloseRef = useLatest(onClose);
4851
const onMessageRef = useLatest(onMessage);
4952
const onErrorRef = useLatest(onError);
53+
const readyStateRef = useLatest(readyState);
5054

5155
const reconnectTimesRef = useRef(0);
5256
const reconnectTimerRef = useRef<ReturnType<typeof setTimeout>>(undefined);
5357

5458
const websocketRef = useRef<WebSocket>(undefined);
5559

56-
const [latestMessage, setLatestMessage] = useState<MessageEvent>();
57-
58-
const [readyState, setReadyState] = useState<ReadyState>(ReadyState.Closed);
59-
6060
const reconnect = () => {
6161
if (
6262
reconnectTimesRef.current < reconnectLimit &&
@@ -125,7 +125,7 @@ function useWebSocket(socketUrl: string, options: Options = {}): Result {
125125
};
126126

127127
const sendMessage: WebSocket['send'] = (message) => {
128-
if (readyState === ReadyState.Open) {
128+
if (readyStateRef.current === ReadyState.Open) {
129129
websocketRef.current?.send(message);
130130
} else {
131131
throw new Error('WebSocket disconnected');

0 commit comments

Comments
 (0)