File tree Expand file tree Collapse file tree 3 files changed +19
-9
lines changed Expand file tree Collapse file tree 3 files changed +19
-9
lines changed Original file line number Diff line number Diff line change @@ -17,13 +17,15 @@ const fn = () => new Promise((resolve) => {
17
17
});
18
18
19
19
const Demo = () => {
20
- const { loading , value , error } = useAsync (fn);
20
+ const state = useAsync (fn);
21
21
22
22
return (
23
23
< div>
24
- {loading
25
- ? < div> Loading... < / div>
26
- : < div> Value: {value}< / div>
24
+ {state .loading ?
25
+ < div> Loading... < / div>
26
+ : state .error ?
27
+ < div> Error ... < / div>
28
+ : < div> Value: {state .value }< / div>
27
29
}
28
30
< / div>
29
31
);
Original file line number Diff line number Diff line change 43
43
"@storybook/react" : " ^3.4.11" ,
44
44
"react" : " next" ,
45
45
"react-dom" : " next" ,
46
- "typescript" : " ^3.1.3 " ,
46
+ "typescript" : " ^3.2.2 " ,
47
47
"ts-node" : " ^7.0.1" ,
48
48
"ts-loader" : " 3" ,
49
49
"babel-core" : " ^6.26.3" ,
Original file line number Diff line number Diff line change 1
1
import { useState , useEffect , useCallback } from 'react' ;
2
2
3
- export interface AsyncState < T > {
4
- loading : boolean ;
5
- error ?: Error | any ;
6
- value ?: T ;
3
+ export type AsyncState < T > =
4
+ | {
5
+ loading : true ;
7
6
}
7
+ | {
8
+ loading : false ;
9
+ error : Error ;
10
+ }
11
+ | {
12
+ loading : false ;
13
+ error ?: undefined ;
14
+ value : T ;
15
+ } ;
8
16
9
17
const useAsync = < T > ( fn : ( ) => Promise < T > , args ?) => {
10
18
const [ state , set ] = useState < AsyncState < T > > ( {
You can’t perform that action at this time.
0 commit comments