我尝试使用Supabase的useUser
钩子来获取用户,然后使用用户ID构造查询,但页面第一次加载时,我得到一个运行时错误:
Unhandled Runtime Error
TypeError: Cannot read properties of null (reading 'id')
Source
pages/users/[id].js (52:30) @ id
50 | .select()
51 | .eq("user_id", id)
> 52 | .eq("follower_id", user.id);
当我刷新时,它工作正常(我假设是因为useUser钩子有时间获取用户)。
import { useEffect, useState } from "react";
import supabase from "../../lib/supabase";
import { useUser } from "@supabase/auth-helpers-react";
function User({ props }) {
const [follows, setFollows] = useState(false);
const user = useUser();
const checkFollowStatus = async () => {
const { data, error } = await supabase
.from("follows")
.select()
.eq("user_id", id)
.eq("follower_id", user.id);
if (!error && data) {
console.log(data);
setFollows(true);
} else {
setFollows(false);
}
};
useEffect(() => {
checkFollowStatus();
}, []);
1条答案
按热度按时间dba5bblo1#
在调用
checkFollowStatus
之前,您需要检查user
是否存在,请参阅以下示例https://supabase.com/docs/guides/auth/auth-helpers/nextjs#client-side-data-fetching-with-rls在您的案例中: