@@ -5,31 +5,39 @@ import { useState } from 'react'
5
5
const getEnv = createIsomorphicFn ( )
6
6
. server ( ( ) => 'server' )
7
7
. client ( ( ) => 'client' )
8
+
8
9
const getServerEnv = createServerFn ( ) . handler ( ( ) => getEnv ( ) )
9
10
10
11
const getEcho = createIsomorphicFn ( )
11
12
. server ( ( input : string ) => 'server received ' + input )
12
13
. client ( ( input ) => 'client received ' + input )
14
+
13
15
const getServerEcho = createServerFn ( )
14
16
. validator ( ( input : string ) => input )
15
17
. handler ( ( { data } ) => getEcho ( data ) )
16
18
17
19
export const Route = createFileRoute ( '/isomorphic-fns' ) ( {
18
20
component : RouteComponent ,
21
+ loader ( ) {
22
+ return {
23
+ envOnLoad : getEnv ( ) ,
24
+ }
25
+ } ,
19
26
} )
20
27
21
28
function RouteComponent ( ) {
29
+ const { envOnLoad } = Route . useLoaderData ( )
22
30
const [ results , setResults ] = useState < Partial < Record < string , string > > > ( )
23
31
async function handleClick ( ) {
24
- const env = getEnv ( )
32
+ const envOnClick = getEnv ( )
25
33
const echo = getEcho ( 'hello' )
26
34
const [ serverEnv , serverEcho ] = await Promise . all ( [
27
35
getServerEnv ( ) ,
28
36
getServerEcho ( { data : 'hello' } ) ,
29
37
] )
30
- setResults ( { env , echo, serverEnv, serverEcho } )
38
+ setResults ( { envOnClick , echo, serverEnv, serverEcho } )
31
39
}
32
- const { env , echo, serverEnv, serverEcho } = results || { }
40
+ const { envOnClick , echo, serverEnv, serverEcho } = results || { }
33
41
return (
34
42
< div >
35
43
< button onClick = { handleClick } data-testid = "test-isomorphic-results-btn" >
@@ -43,7 +51,9 @@ function RouteComponent() {
43
51
When we called the function on the server it returned:
44
52
< pre data-testid = "server-result" > { JSON . stringify ( serverEnv ) } </ pre >
45
53
When we called the function on the client it returned:
46
- < pre data-testid = "client-result" > { JSON . stringify ( env ) } </ pre >
54
+ < pre data-testid = "client-result" > { JSON . stringify ( envOnClick ) } </ pre >
55
+ When we called the function during SSR it returned:
56
+ < pre data-testid = "ssr-result" > { JSON . stringify ( envOnLoad ) } </ pre >
47
57
< br />
48
58
< h1 >
49
59
< code > echo</ code >
0 commit comments