File tree Expand file tree Collapse file tree 2 files changed +8
-6
lines changed Expand file tree Collapse file tree 2 files changed +8
-6
lines changed Original file line number Diff line number Diff line change 3
3
## [ Unreleased]
4
4
### Changed
5
5
- fix build for UMD
6
+ - fix: useAbortSignal to work with React 18 #35
6
7
7
8
## [ 2.1.0] - 2021-12-23
8
9
### Changed
Original file line number Diff line number Diff line change 4
4
useLayoutEffect ,
5
5
useReducer ,
6
6
useRef ,
7
+ useState ,
7
8
Dispatch ,
8
9
Reducer ,
9
10
ReducerState ,
@@ -18,17 +19,17 @@ const isClient = (
18
19
const useIsomorphicLayoutEffect = isClient ? useLayoutEffect : useEffect ;
19
20
20
21
const useAbortSignal = ( ) => {
21
- const abortController = useRef < AbortController > ( ) ;
22
- if ( ! abortController . current ) {
23
- abortController . current = new AbortController ( ) ;
24
- }
22
+ const [ controller , setController ] = useState ( ( ) => new AbortController ( ) ) ;
23
+ const lastController = useRef ( controller ) ;
25
24
useEffect ( ( ) => {
26
25
const abort = ( ) => {
27
- ( abortController . current as AbortController ) . abort ( ) ;
26
+ lastController . current . abort ( ) ;
27
+ lastController . current = new AbortController ( ) ;
28
+ setController ( lastController . current ) ;
28
29
} ;
29
30
return abort ;
30
31
} , [ ] ) ;
31
- return abortController . current . signal ;
32
+ return controller . signal ;
32
33
} ;
33
34
34
35
export type AsyncActionHandlers <
You can’t perform that action at this time.
0 commit comments