graphQL查询正在运行http://trialtest1.local/graphql?query={%20posts%20{%20nodes%20{%20slug%20title%20}%20}}
但是当我在next.js中请求posts时,它显示undefined。有人能看出我做错了什么吗?
import Link from 'next/link'
export default function Home( {posts}){
console.log({posts})
return(
<div>
<h1>Hello From The Home Page!</h1>
{
posts?.nodes?.map(post => {
return(
<ul key={post.slug}>
<li>
<Link href={`/posts/${post.slug}`}>{post.title}</Link>
</li>
</ul>
)
})
}
</div>
)
}
export async function getInitialProps(){
const res = await fetch('http://trialtest1.local/graphql', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
query: `
query HomePageQuery {
posts {
nodes {
slug
title
}
}
}
`,
})
})
const json = await res.json()
return {
props: {
posts: json.data.posts,
},
}
}
1条答案
按热度按时间3qpi33ja1#
在你的Next.js应用程序中,这个问题可能与你如何访问GraphQL响应数据有关。当使用'getInitialProps'时,GraphQL响应通常在'data'对象中。下面是对代码的修改,以正确访问帖子:
在组件中,“posts”现在应该包含post对象数组。确保您正在使用"posts.nodes.map“访问”Home“组件中的正确数据结构,以遍历每个帖子。此外,检查控制台日志,以确保数据被正确提取并传递到组件。