1
+ import { DebugArea } from '@components/DebugArea' ;
2
+ import { Loading } from '@components/Loading' ;
1
3
import { Regenerate } from '@components/Regenerate' ;
4
+ import { Suspense } from 'react' ;
2
5
import { Client } from './client' ;
6
+ import { Server } from './server' ;
3
7
4
- async function getData ( ) {
5
- const res = await fetch ( 'https://static-next.vercel.app/api/test' ) ;
6
- return res . json ( ) ;
8
+ async function getData ( delay ?: number ) : Promise < { date : string } > {
9
+ return new Promise ( ( resolve , reject ) => {
10
+ fetch (
11
+ `https://static-next.vercel.app/api/test${
12
+ delay ? `?delay=${ delay } ` : ''
13
+ } `
14
+ )
15
+ . then ( ( res ) => res . json ( ) )
16
+ . then ( ( json ) => {
17
+ setTimeout ( ( ) => resolve ( json ) , delay ) ;
18
+ } )
19
+ . catch ( reject ) ;
20
+ } ) ;
7
21
}
8
22
9
23
export default async function Page ( { params } : any ) {
10
24
const data = await getData ( ) ;
25
+ const data2 = await getData ( Math . random ( ) * 5000 ) ;
26
+ const data3 = await getData ( Math . random ( ) * 5000 ) ;
11
27
12
28
return (
13
29
< >
@@ -25,9 +41,27 @@ export default async function Page({ params }: any) {
25
41
< p >
26
42
This implementation uses < i > RSC</ i > .
27
43
</ p >
44
+ < ul >
45
+ < li >
46
+ Server:
47
+ < Suspense fallback = { < Loading /> } >
48
+ < Server date = { data2 . date } />
49
+ </ Suspense >
50
+ </ li >
51
+ < li >
52
+ Client:
53
+ < Suspense fallback = { < Loading /> } >
54
+ < Client date = { data3 . date } />
55
+ </ Suspense >
56
+ </ li >
57
+ </ ul >
28
58
29
- < Regenerate date = { data . date } />
30
- < Client />
59
+ < Suspense fallback = { < Loading /> } >
60
+ < Regenerate date = { data . date } />
61
+ </ Suspense >
62
+ < Suspense fallback = { < Loading /> } >
63
+ < DebugArea value = { data . date } />
64
+ </ Suspense >
31
65
</ >
32
66
) ;
33
67
}
@@ -37,5 +71,8 @@ export async function generateStaticParams() {
37
71
{
38
72
slug : 'react-server-components' ,
39
73
} ,
74
+ {
75
+ slug : 'react-server-components2' ,
76
+ } ,
40
77
] ;
41
78
}
0 commit comments