@@ -13,7 +13,7 @@ A handler fetches data and returns it with `page()`. The page component receives
1313it in ` props.data ` :
1414
1515``` tsx routes/projects/[id].tsx
16- import { page } from " fresh" ;
16+ import { HttpError , page } from " fresh" ;
1717import { define } from " @/utils.ts" ;
1818
1919interface Data {
@@ -60,6 +60,7 @@ For simpler cases, you can fetch data directly in an async component without a
6060separate handler:
6161
6262``` tsx routes/projects/[id].tsx
63+ import { HttpError } from " fresh" ;
6364import { define } from " @/utils.ts" ;
6465
6566export default define .page (async (ctx ) => {
@@ -96,12 +97,19 @@ export default define.middleware(async (ctx) => {
9697```
9798
9899``` tsx routes/dashboard.tsx
100+ import { page } from " fresh" ;
99101import { define } from " @/utils.ts" ;
100102
103+ export const handler = define .handlers ({
104+ GET(ctx ) {
105+ if (! ctx .state .user ) {
106+ return ctx .redirect (" /login" );
107+ }
108+ return page ();
109+ },
110+ });
111+
101112export default define .page ((ctx ) => {
102- if (! ctx .state .user ) {
103- return ctx .redirect (" /login" );
104- }
105113 return <h1 >Welcome, { ctx .state .user .name } </h1 >;
106114});
107115```
@@ -117,7 +125,9 @@ Page components receive these properties:
117125| ` params ` | ` Record<string, string> ` | Route parameters (e.g. ` :id ` ) |
118126| ` req ` | ` Request ` | The original HTTP request |
119127| ` state ` | ` State ` | Shared state set by middleware |
128+ | ` config ` | ` ResolvedFreshConfig ` | The resolved Fresh configuration |
120129| ` route ` | ` string \| null ` | The matched route pattern |
130+ | ` info ` | ` Deno.ServeHandlerInfo ` | Server connection info |
121131| ` error ` | ` unknown \| null ` | Caught error (on error pages) |
122132| ` isPartial ` | ` boolean ` | Whether this is a partial request |
123133| ` Component ` | ` FunctionComponent ` | Child component (in layouts) |
0 commit comments