Skip to content

Commit 3208fb9

Browse files
committed
Changed 47 example
1 parent 85ec36f commit 3208fb9

File tree

2 files changed

+26
-0
lines changed

2 files changed

+26
-0
lines changed

src/06-advanced-hooks/47-discriminated-unions-in-usestate.problem.tsx

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,15 +30,28 @@ export const useLoadAsyncVideo = (src: string) => {
3030
useEffect(() => {
3131
setState({ status: "loading" });
3232

33+
let cancelled = false;
34+
3335
fetchVideo(src)
3436
.then((blob) => {
37+
if (cancelled) {
38+
return;
39+
}
40+
3541
appendVideoToDomAndPlay(blob);
3642

3743
setState({ status: "loaded" });
3844
})
3945
.catch((error) => {
46+
if (cancelled) {
47+
return;
48+
}
4049
setState({ status: "error", error });
4150
});
51+
52+
return () => {
53+
cancelled = true;
54+
};
4255
}, [src]);
4356

4457
// @ts-expect-error

src/06-advanced-hooks/47-discriminated-unions-in-usestate.solution.tsx

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,28 @@ export const useLoadAsyncVideo = (src: string) => {
2121
useEffect(() => {
2222
setState({ status: "loading" });
2323

24+
let cancelled = false;
25+
2426
fetchVideo(src)
2527
.then((blob) => {
28+
if (cancelled) {
29+
return;
30+
}
31+
2632
appendVideoToDomAndPlay(blob);
2733

2834
setState({ status: "loaded" });
2935
})
3036
.catch((error) => {
37+
if (cancelled) {
38+
return;
39+
}
3140
setState({ status: "error", error });
3241
});
42+
43+
return () => {
44+
cancelled = true;
45+
};
3346
}, [src]);
3447

3548
// @ts-expect-error

0 commit comments

Comments
 (0)