我正在使用本教程https://css-tricks.com/build-a-dynamic-jamstack-app-with-gatsbyjs-and-faunadb/作为指南,使用 zoodb 和 gatsbyjs 进行一些动态内容更新。现在我的一切都在某种程度上发挥了作用。我遇到的问题是,如果我手动更新数据库,或者最终在 lambda 函数中更新,我希望 graphql 查询导致状态更改并重新渲染反应。发生的情况是我只能在页面刷新时看到新数据。根据这篇文章,这应该是客户端水合,但是当数据库发生变化时,我没有得到预期的效果。
任何帮助将不胜感激
这是我的盖茨比页面
import React, { useState } from 'react';
import Layout from "../components/layout"
import { gql } from "apollo-boost"
import { useQuery } from "@apollo/react-hooks"
import { graphql } from "gatsby"
const HIT_COUNTER = gql`
query HitCounter{
findHitCounterByID(id: "0248392") {
amount
}
}
`
const IndexPage = () => {
const { loading, data } = useQuery(HIT_COUNTER);
return (
<Layout>
{data.findHitCounterByID.amount}
</Layout>
)
}
export default IndexPage
在 gatsbybrowser.js 我正在执行以下操作
import React from "react"
import ApolloClient from "apollo-boost"
import { ApolloProvider } from "react-apollo"
const client = new ApolloClient({
uri: "https://graphql.fauna.com/graphql",
request: operation => {
operation.setContext({
headers: {
Authorization: `Bearer ${process.env.GATSBY_FAUNA_DB}`,
},
})
},
})
export const wrapRootElement = ({ element }) => (
<ApolloProvider client={client}>{element}</ApolloProvider>
)