/
githubmirror
/
next.js
Обзор
Документация
Войти
/
githubmirror
/
next.js
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
canary
examples/with-magic/lib/hooks.js
31 строка
883 B
Steven
chore(examples): use default prettier for examples/templates (#60530)
12 янв 2024, 02:01
Не верифицирован
12 янв 2024, 02:01
4466ba4
Код
Авторство
О чём код?
import { useEffect } from "react"; import Router from "next/router"; import useSWR from "swr"; const fetcher = (url) => fetch(url) .then((r) => r.json()) .then((data) => { return { user: data?.user || null }; }); export function useUser({ redirectTo, redirectIfFound } = {}) { const { data, error } = useSWR("/api/user", fetcher); const user = data?.user; const finished = Boolean(data); const hasUser = Boolean(user); useEffect(() => { if (!redirectTo || !finished) return; if ( // If redirectTo is set, redirect if the user was not found. (redirectTo && !redirectIfFound && !hasUser) || // If redirectIfFound is also set, redirect if the user was found (redirectIfFound && hasUser) ) { Router.push(redirectTo); } }, [redirectTo, redirectIfFound, finished, hasUser]); return error ? null : user; }