const searchSchema = z.object({
includeExpired: fallback(z.boolean(), false).default(false),
});
const Route = createFileRoute(
'/$locale/$departmentId/staff',
)({
component: RouteComponent,
context: () => ({ title: 'Staff' }),
validateSearch: zodValidator(searchSchema),
loaderDeps: ({ search: { includeExpired } }) => ({
includeExpired,
}),
loader: async ({
context: { queryClient },
params,
deps: { includeExpired },
}) => {
// artificial timeout to see loader
await new Promise(r => setTimeout(r, 2000));
return {
staff: await queryClient.ensureQueryData(
staffQueryOptions.list(params.departmentId, {
includeExpired,
}),
),
};
},
});
function RouteComponent() {
const data = Route.useLoaderData();
return <UserList users={data.staff} />;
}
const searchSchema = z.object({
includeExpired: fallback(z.boolean(), false).default(false),
});
const Route = createFileRoute(
'/$locale/$departmentId/staff',
)({
component: RouteComponent,
context: () => ({ title: 'Staff' }),
validateSearch: zodValidator(searchSchema),
loaderDeps: ({ search: { includeExpired } }) => ({
includeExpired,
}),
loader: async ({
context: { queryClient },
params,
deps: { includeExpired },
}) => {
// artificial timeout to see loader
await new Promise(r => setTimeout(r, 2000));
return {
staff: await queryClient.ensureQueryData(
staffQueryOptions.list(params.departmentId, {
includeExpired,
}),
),
};
},
});
function RouteComponent() {
const data = Route.useLoaderData();
return <UserList users={data.staff} />;
}