Skip to content

useLogin

Usage

Use the useLogin hook to login a user. This will attach the user to the current selection. …

Basic Usage

"use client";
import { useLogin } from "@frend-digital/centra/client";
const LoginForm = () => {
const login = useLogin();
const action = (formData: FormData) => {
const email = formData.get("email").toString();
const password = formData.get("password").toString();
if (!email || !password) return; // Show a warning to the user here somehow
login.mutate({ email, password });
};
return (
<form action={action}>
<h2>Login</h2>
<input name="email" type="email" required />
<input name="password" type="password" required />
<button type="submit">
{login.isPending ? "Logging in..." : "Login"}
</button>
</form>
);
};

Full example

"use client";
import { useLogin, useLoggedIn } from "@frend-digital/centra/client";
import { redirect } from "next/navigation";
const LoginForm = () => {
const { data: isLoggedIn } = useLoggedIn();
const login = useLogin({
onSuccess: () => {
// Do something here like sending loggedIn event to GTM analytics
},
});
if (isLoggedIn) return redirect("/account");
const action = (formData: FormData) => {
const email = formData.get("email").toString();
const password = formData.get("password").toString();
if (!email || !password) return; // Show a warning to the user here somehow
login.mutate({ email, password });
};
return (
<form action={action}>
<h2>Login</h2>
<input name="email" type="email" required />
<input name="password" type="password" required />
<button type="submit">
{login.isPending ? "Logging in..." : "Login"}
</button>
</form>
);
};

Anatomy

The internal workings of this hook.

declare function useLogin({
onSuccess,
onError,
onMutate,
onSettled,
}: {
onSuccess?: () => void;
onError?: (error: unknown, variables: unknown, context: unknown) => void;
onMutate?: (variables: unknown) => void;
onSettled?: () => void;
}): {
mutate: (variables: {email: string, password: string}) => Promise<void>;
...UseMutationResult
};