npm install --save gatsby-plugin-apollo-shopify
// In your gatsby-config.js
plugins: [
{
resolve: `gatsby-plugin-apollo-shopify`,
options: {
shopName: `gatsbyjs`,
accessToken: `48bbac10dae7225fe4e36a545d1b9b2f`,
// Optionally set the API version you want to use. For a list of available API versions,
// see: https://shopify.dev/concepts/about-apis/versioning/release-notes
// Defaults to unspecified/oldest stable
apiVersion: "2020-07",
},
},
]
To utilize the Apollo client within your Gatsby project, import graphql-tag
and react-apollo
. for example:
import gql from "graphql-tag"
import { Query } from "react-apollo"
const GET_PRODUCT = gql`
query($handle: String!) {
shop {
products(first:1, query: $handle) {
edges {
node {
variants(first: 1) {
edges {
node {
availableForSale
}
}
}
}
}
}
}
}
`
export default ({ children, data }) => {
const product = data.shopifyProduct
return (
<Query query={GET_PRODUCT} variables={{ handle: product.handle }}>
{({ loading, error, data }) => {
if (loading) return <div>Loading stock status...</div>
if (error) return <div>There was an error!</div>
return (
<>
<h3>Stock Status: {data && data.shop.products && data.shop.products.edges[0].node.variants && data.shop.products.edges[0].node.variants.edges[0].node.availableForSale.toString()}</h3>
</>
)
}}
</Query>
)
}
export const query = graphql`
query productQuery($id: String!) {
shopifyProduct(id: { eq: $id }) {
handle
}
}
`
Most of this plugin was taken from the gatsby-plugin-apollo-client within the using-multiple-providers example site.