2017-11-04 20 views
0

GraphQL, Gatsby 플러그인이 예리하고 반응 : 내 쿼리에서 device.width의 자바 스크립트 계산을 포함하려고하는데 작동하지 않는 것 같습니다. 목표는 클라이언트의 장치 화면 너비를 기반으로 쿼리하여 사이트에서 반응 형 이미지를 제공 할 수 있도록하는 것입니다. 나는 deviceWidth는 int를 반환으로,이 같은 작업을 얻으려고 노력하고 responsiveSizes에 인수로 쿼리를 통과 해요 :변수가 포함 된 그래프 QL 쿼리

const deviceWidth = (window.innerWidth > 0) ? window.innerWidth : screen.width; 

export const pageQuery = graphql` 
    query BlogPostBySlug($slug: String!) { 
    markdownRemark(fields: { slug: { eq: $slug } }) { 
    html 
    timeToRead 
    excerpt 
    frontmatter { 
     title 
     cover 
     date 
     category 
     tags 
     thumbnail { 
     childImageSharp { 
      responsiveSizes(maxWidth: deviceWidth, quality: 50, cropFocus: CENTER, toFormat: JPG) { 
      src 
      srcSet 
      sizes 
      base64 
      } 
     } 
     } 
    } 
    fields { 
     slug 
    } 
    } 
} 
`; 

답변

0

나는이 방법은 개츠비와 함께 작동합니다 생각하지 않습니다.

Gatsby는 디스크에 저장되어 사용자에게 제공되는 정적 HTML을 만듭니다. 그런 다음 React가 부팅되어 DOM을 인계받습니다. 귀하의 접근 방식에서, pageQuery에 포함될 데이터는 브라우저에서 계산됩니다. 즉, pageQuery은 모든 사용자에게 고유합니다.

나는 gatsby-image 플러그인과 같은 것이이 문제를 해결할 것이라고 생각합니다.

쿼리와 일치하는 모든 관련 데이터를 GraphQL에서 가져온 다음 클라이언트에서로드 할 버전을 결정합니다.