我尝试在我的NEXT.JS应用程序中使用useSWR。首先,我在使用它的地方做了一个自定义钩子:
import useSWR from "swr";
const apiUrl = process.env.NEXT_PUBLIC_API_URL;
const fetcher = (url) => {
fetch(url).then((res) => res.json());
};
export default function useSocialMedia() {
const url = apiUrl + "/socialMedia";
const { data, error } = useSWR(url, fetcher);
console.log("data : ", data);
return {
socialMedia: data,
loading: !error && !data,
error: error,
};
}
然后,将其导入到组件中:
import styles from "./styles/socialIcons.module.scss";
import useSocialMedia from "../../../utils/hooks/useSocialMedia";
export default function SocialIcons() {
const { socialMedia, loading, error } = useSocialMedia();
return (
<div className={styles.socialIcons}>
{loading && <p>Loading...</p>}
{error && <p>Loading failed : {error}</p>}
{socialMedia && <p>Here will appear my social media list</p>}
</div>
);
}
由于我的console.log在我的自定义钩子中,我总是有未定义的数据,所以我的组件在加载时卡住了...我不知道我的代码出了什么问题。
1条答案
按热度按时间ryhaxcpt1#
考虑下面的例子,你忘记了在fetcher函数中返回数据,你只使用了console.log,它没有返回任何结果。