export const Route = createFileRoute("/_main/teacher/$teacherSlug")({
loader: async ({ context, params }) => {
const teacher = await context.queryClient.ensureQueryData(
api.teachers.findProfileBySlug.queryOptions({
input: {
slug: params.teacherSlug,
},
}),
);
teacher &&
context.queryClient.setQueryData(
api.teachers.getSave.queryKey({
input: {
teacherId: teacher.id,
},
}),
() => ({
isSaved: !!teacher.saves?.length,
savedAt: teacher.saves?.[0]?.createdAt || null,
teacherId: teacher.id,
saveId: teacher.saves?.[0]?.id || null,
}),
);
return {
dehydratedState: dehydrate(context.queryClient),
};
},
component: TeacherPage,
});
function TeacherPage() {
const { dehydratedState } = Route.useLoaderData();
// ...
return (
<HydrationBoundary state={dehydratedState}>{/** ... */}</HydrationBoundary>
);
}
function SomeRandomComponentSomewhere({ teacherId }: { teacherId: string }) {
const { data: saveState } = useQuery(
// Query should be initialized
api.teachers.getSave.queryOptions({
input: {
teacherId,
},
}),
);
return <div>SSR initialized save state: {JSON.stringify(saveState)}</div>;
}
export const Route = createFileRoute("/_main/teacher/$teacherSlug")({
loader: async ({ context, params }) => {
const teacher = await context.queryClient.ensureQueryData(
api.teachers.findProfileBySlug.queryOptions({
input: {
slug: params.teacherSlug,
},
}),
);
teacher &&
context.queryClient.setQueryData(
api.teachers.getSave.queryKey({
input: {
teacherId: teacher.id,
},
}),
() => ({
isSaved: !!teacher.saves?.length,
savedAt: teacher.saves?.[0]?.createdAt || null,
teacherId: teacher.id,
saveId: teacher.saves?.[0]?.id || null,
}),
);
return {
dehydratedState: dehydrate(context.queryClient),
};
},
component: TeacherPage,
});
function TeacherPage() {
const { dehydratedState } = Route.useLoaderData();
// ...
return (
<HydrationBoundary state={dehydratedState}>{/** ... */}</HydrationBoundary>
);
}
function SomeRandomComponentSomewhere({ teacherId }: { teacherId: string }) {
const { data: saveState } = useQuery(
// Query should be initialized
api.teachers.getSave.queryOptions({
input: {
teacherId,
},
}),
);
return <div>SSR initialized save state: {JSON.stringify(saveState)}</div>;
}