首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >graphQL查询中的变量

graphQL查询中的变量
EN

Stack Overflow用户
提问于 2018-12-17 00:33:03
回答 2查看 12.8K关注 0票数 17

编辑:现在使用下面的工作代码

GraphiQL版本

我使用此查询来获取gatsby-image

代码语言:javascript
复制
query getImages($fileName: String) {
  landscape: file(relativePath: {eq: $fileName}) {
    childImageSharp {
      fluid(maxWidth: 1000) {
        base64
        tracedSVG
        aspectRatio
        src
        srcSet
        srcWebp
        srcSetWebp
        sizes
        originalImg
        originalName
      }
    }
  }
}

然后是这个查询变量:

代码语言:javascript
复制
{
  "fileName": "titanic.jpg"
}

上面的代码在GraphiQL中运行良好。

盖茨比版本

现在我想在Gatsby中使用它,所以我有以下代码:

代码语言:javascript
复制
import React from "react"
import { graphql } from "gatsby"
import Img from "gatsby-image"

export default ({ data }) => (
  <div>
    <Img fluid={data.landscape.childImageSharp.fluid} />
  </div>
)

export const query = (
  graphql`
    query getImages($fileName: String) {
      landscape: file(relativePath: {eq: $fileName}) {
        childImageSharp {
          fluid(maxWidth: 1000) {
            base64
            tracedSVG
            aspectRatio
            src
            srcSet
            srcWebp
            srcSetWebp
            sizes
            originalImg
            originalName
          }
        }
      }
    }
  `,
  {fileName: "knight.jpg"}
)

上面的方法不起作用。data.landscape.childImageSharp === null

我做错了什么?

编辑:

工作版本

谢谢你的帮助!下面的代码运行得很好。这个post特别有帮助。这不是一个理想的解决方案,但它适用于我。

代码语言:javascript
复制
import React from 'react';
import Img from 'gatsby-image';
import { StaticQuery, graphql } from 'gatsby';

function renderImage(file) {
  return (
    <Img fluid={file.node.childImageSharp.fluid} />
  )
}

const MyImg = function (props) {

  return <StaticQuery
    query={graphql`
      query {
        images: allFile(filter: { sourceInstanceName: { eq: "images" } }) {
          edges {
            node {
              extension
              relativePath
              childImageSharp {
              fluid(maxWidth: 1000) {
                ...GatsbyImageSharpFluid
              }
            }
          }
        }
      }
    }
    `}
    render={(data) => {
      const image = data.images.edges.find(
        image => image.node.relativePath === "knight.jpg"
      )
      return(renderImage(image))
    }}
  />
}

export default MyImg;
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53804219

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档