【发布时间】:2021-01-10 04:54:50
【问题描述】:
我在 NextJS 项目中使用 useSWR,但我无法返回 undefined。
hooks.jsx
import useSWR from 'swr';
import { useEffect } from 'react';
import { useRouter } from 'next/router';
const fetcher = (url) => {
fetch(url)
.then((r) => r.json())
.then((data) => {
return { user: data?.user || null };
});
};
function useUser({ redirectTo, redirectIfFound } = {} ) {
const router = useRouter();
const { data, error } = useSWR('/api/users/fetch', fetcher);
const user = data?.user;
const finished = Boolean(data);
const hasUser = Boolean(user);
console.log(user);
useEffect(() => {
if (!redirectTo || !finished) return;
if (
// for register / signin route
(redirectTo && redirectIfFound && hasUser)
) {
router.push(redirectTo);
}
}, [redirectTo, redirectIfFound, finished, hasUser]);
return error ? null : user;
}
export default useUser;
当我在 fetcher 函数中通过控制台记录“数据”时,它会按预期返回数据。但是,在主 useUser 函数中,“数据”返回未定义。我做错了什么?
提前致谢
【问题讨论】:
标签: next.js