graphql 标签中不允许字符串插值。(盖茨比)

Ben*_*rio 2 javascript interpolation reactjs graphql gatsby

尝试在我的 graphql 查询中为长而复杂的 Id 使用别名:

编译失败:graphql 标签中不允许字符串插值:

const query = graphql`
  query MyQuery {
    wordpress {
      menu(id: "${wordpress("mainMenu")}") {
        ...rest of query
      }
    }
  }
`
Run Code Online (Sandbox Code Playgroud)

Han*_*dev 7

您应该改用查询变量。

可以通过作为createPageAPI参数的上下文对象将变量添加到页面查询(但不是静态查询)。文档

// inside template file
export const query = graphql`
  query MyQuery($id: String!) {
    menu(id: { eq: $id }) {
        ...rest of query
    }
  }
`
Run Code Online (Sandbox Code Playgroud)

然后,您可以在gatsby-node.js. 例如:

// gatsby-node.js
const postTemplate = path.resolve(`./src/templates/post.js`)
allWordpressPost.edges.forEach(edge => {
  createPage({
    path: `/${edge.node.slug}/`,
    component: slash(postTemplate),
    context: {
      id: edge.node.id, // 
    },
  })
})
Run Code Online (Sandbox Code Playgroud)

看看gatsby 的这个using-wordpress 示例