我想在下面的/resource/[slug]/page.tsx中尝试getResourcesDetail,但出现错误“Error:无法读取null的属性(阅读“title”)"。
我试着这样给予问号“资源?.title”,错误消失,但标题内容不显示。
使用Next JS和Sanity
import { getResourcesDetail } from "@/sanity/actions";
type Props = {
params: { slug: string };
};
async function Resource({ params }: Props) {
const slug = params.slug;
const resources = await getResourcesDetail(slug);
console.log(resources);
return (
<section>
<div className="text-white max-w-2xl">
<div className="text-white max-w-2xl">
<p>{slug}</p>
<p>{resources?.title}</p>
</div>
</div>
</section>
);
}
export default Resource;
这是我的sanity文件夹中的action.ts
export async function getResourcesDetail(slug: string) {
try {
const resources = await readClient.fetch(
groq`
*[_type == 'resource' && slug.current == $slug][0]
{
_id,
title,
downloadLink,
"image": poster.asset->url,
views,
category,
"slug" : slug.current,
}
`,
{ slug }
);
return resources;
} catch (error) {
console.log(error);
}
}
我希望从理智获得的标题出现。
1条答案
按热度按时间3wabscal1#
将
resources
记录到控制台以查看getResourcesDetail
是否成功获取数据。如果它打印null
,则意味着fetch没有返回任何数据。检查传入Sanity客户端的查询,假设变量readClient
和slug
在代码中的其他位置已正确定义和配置。