【问题标题】:useSWR returns correct data in the fetcher function but not in the main functionuseSWR 在 fetcher 函数中返回正确的数据,但在 main 函数中不返回
【发布时间】: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


    【解决方案1】:

    您的 fetcher 中的 fetch 未返回。

    【讨论】:

      猜你喜欢
      • 2013-02-17
      • 1970-01-01
      • 1970-01-01
      • 2019-11-22
      • 2014-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-11
      • 1970-01-01
      相关资源
      最近更新 更多