diff --git a/examples/tuono/src/routes/__root.tsx b/examples/tuono/src/routes/__root.tsx index 6ce55ca9..60bbbbba 100644 --- a/examples/tuono/src/routes/__root.tsx +++ b/examples/tuono/src/routes/__root.tsx @@ -8,7 +8,7 @@ export default function RootRoute({ children }: RootRouteProps): JSX.Element { return ( <>
{children}
diff --git a/examples/tuono/src/routes/index.rs b/examples/tuono/src/routes/index.rs index 393c37e9..fb2a041a 100644 --- a/examples/tuono/src/routes/index.rs +++ b/examples/tuono/src/routes/index.rs @@ -3,14 +3,12 @@ use tuono_lib::{Request, Response}; #[derive(Serialize)] struct MyResponse<'a> { - title: &'a str, - subtitle: &'a str, + description: &'a str, } #[tuono_lib::handler] fn get_server_side_props(req: &Request) -> Response { Response::Props(Box::new(MyResponse { - title: "title", - subtitle: "subtitle", + description: "This descriptions comes from the rust server", })) } diff --git a/examples/tuono/src/routes/index.tsx b/examples/tuono/src/routes/index.tsx index a971e75e..0fe72eb2 100644 --- a/examples/tuono/src/routes/index.tsx +++ b/examples/tuono/src/routes/index.tsx @@ -1,3 +1,20 @@ -export default function IndexPage(): JSX.Element { - return

Index Page

+import type { TuonoProps } from 'tuono' + +type IndexProps = { + description: string +} +export default function IndexPage({ + data, + isLoading, +}: TuonoProps): JSX.Element { + if (isLoading) { + return

Loading...

+ } + + return ( + <> +

Index Page

+

{data?.description}

+ + ) } diff --git a/packages/tuono/src/index.ts b/packages/tuono/src/index.ts index ce54666d..842eddcc 100644 --- a/packages/tuono/src/index.ts +++ b/packages/tuono/src/index.ts @@ -6,4 +6,6 @@ import { RouterProvider, } from './router' +export type { TuonoProps } from './types' + export { createRoute, createRootRoute, createRouter, Link, RouterProvider } diff --git a/packages/tuono/src/router/hooks/useServerSideProps.tsx b/packages/tuono/src/router/hooks/useServerSideProps.tsx index 486c1289..b221253d 100644 --- a/packages/tuono/src/router/hooks/useServerSideProps.tsx +++ b/packages/tuono/src/router/hooks/useServerSideProps.tsx @@ -45,7 +45,8 @@ export function useServerSideProps( ;(async (): Promise => { setIsLoading(true) try { - const res = await fetch(`/__tuono/data/${route.path}`) + const path = route.path === '/' ? '' : route.path + const res = await fetch(`/__tuono/data/${path}`) setData(await res.json()) } catch (error) { // Handle here error diff --git a/packages/tuono/src/types.ts b/packages/tuono/src/types.ts new file mode 100644 index 00000000..2d2b5b83 --- /dev/null +++ b/packages/tuono/src/types.ts @@ -0,0 +1,4 @@ +export interface TuonoProps { + data?: T + isLoading: boolean +}