main
js 41 lines 813 Bytes
Raw
1 import React, {Suspense, use} from 'react';
2
3 async function sleep(ms) {
4 return new Promise(resolve => setTimeout(resolve, ms));
5 }
6
7 function Use({useable}) {
8 use(useable);
9 return null;
10 }
11
12 let delay1;
13 let delay2;
14
15 export function resetNestedReveal() {
16 delay1 = undefined;
17 delay2 = undefined;
18 }
19
20 export default function NestedReveal({}) {
21 if (!delay1) {
22 delay1 = sleep(100);
23 // Needs to happen before the throttled reveal of delay 1
24 delay2 = sleep(200);
25 }
26
27 return (
28 <div className="swipe-recognizer">
29 Shell
30 <Suspense fallback="Loading level 1">
31 <div>Level 1</div>
32 <Use useable={delay1} />
33
34 <Suspense fallback="Loading level 2">
35 <div>Level 2</div>
36 <Use useable={delay2} />
37 </Suspense>
38 </Suspense>
39 </div>
40 );
41 }