T
TanStack3w ago
absent-sapphire

useRouteContext is not waiting for `beforeLoad` function

I have a problem in solid:
export const Route = createFileRoute("/_spa/_authenticated")({
component: AuthLayout,
beforeLoad: async ({ context }): Promise<{ user: AuthenticatedUserResponse }> => {
let user = context.authenticatedUser();

if (!user) {
// trying to get the user from refresh token request
user = await getRefreshToken(undefined, {
customResponseHandler: (response) => {
if (response.status === 401) throw redirect({ to: "/auth/redirect" });

return response.json() as any;
},
});
console.log("fetched user", user);
context.setAuthenticatedUser(user);
}

console.log("return user", user);
return { user };
},
});

// in the route component:

const routeContext = Route.useRouteContext();

createComputed(() => {
console.log(routeContext());
console.log(routeContext().user);
});
export const Route = createFileRoute("/_spa/_authenticated")({
component: AuthLayout,
beforeLoad: async ({ context }): Promise<{ user: AuthenticatedUserResponse }> => {
let user = context.authenticatedUser();

if (!user) {
// trying to get the user from refresh token request
user = await getRefreshToken(undefined, {
customResponseHandler: (response) => {
if (response.status === 401) throw redirect({ to: "/auth/redirect" });

return response.json() as any;
},
});
console.log("fetched user", user);
context.setAuthenticatedUser(user);
}

console.log("return user", user);
return { user };
},
});

// in the route component:

const routeContext = Route.useRouteContext();

createComputed(() => {
console.log(routeContext());
console.log(routeContext().user);
});
Sometimes when doing navigation, routeContext() doesn't have user prop, but in beforeLoad function I always set this, what's the problem?
2 Replies
equal-aqua
equal-aqua2w ago
absent-sapphire
absent-sapphireOP2w ago
Yes, exactly! Subscribed for that, thank you!

Did you find this page helpful?