您的方法部分正确。您正在使用基于 Promise 的方法,但是在使用时then()
您已经解决并部分解决了它,因此您不需要使用 的回调resolve()
,这可能会导致 Promise 函数的重复,因此请尝试将其删除。
此外,您可能希望使用async
/await
函数使用更友好的方法。就像是:
exports.createPages = async ({ graphql, actions, reporter }) => {
const yourQuery= await graphql(
`
{
allWordpressPost {
edges{
node{
id
title
slug
excerpt
content
}
}
}
}
`
if (yourQuery.errors) {
reporter.panicOnBuild(`Error while running GraphQL query.`);
return;
}
const postTemplate = path.resolve("./src/templates/post.js")
_.each(yourQuery.data.allWordpressPost.edges, edge => {
createPage({
path: `/post/${edge.node.slug}/`,
component: slash(postTemplate),
context: edge.node,
})
})
})
// and so on for the rest of the queries
};
此外,console.log(pageContext)
在您的中放置一个postTemplate
以获取达到该点的内容并将模板命名为:
const Post = ({pageContext}) => {
console.log("your pageContext is", pageContext);
return <div>
<h1>
{pageContext.title}
</h1>
</div>
}
export default Post;