Reactjs 盖茨比:如何在构建时将数据传递给反应上下文
我有一个盖茨比网站,我正在使用React上下文提供一个主题(标题、页脚、样式等)。现在我想在页脚添加上一次构建时间,例如“上次更新:11月13日23:08”。我该怎么做 显然,如果我只是将构建时间放在上下文提供程序中或创建它的React组件中的任何位置,那么时间将随着每次刷新而更新(与每次构建相反) 我想我应该能够在Reactjs 盖茨比:如何在构建时将数据传递给反应上下文,reactjs,gatsby,Reactjs,Gatsby,我有一个盖茨比网站,我正在使用React上下文提供一个主题(标题、页脚、样式等)。现在我想在页脚添加上一次构建时间,例如“上次更新:11月13日23:08”。我该怎么做 显然,如果我只是将构建时间放在上下文提供程序中或创建它的React组件中的任何位置,那么时间将随着每次刷新而更新(与每次构建相反) 我想我应该能够在gatsby node.jscreatePagesAPI中设置buildTime=new Date(),然后在pageContext中传递构建时间。但是在将它传递给几个React组件
gatsby node.js
createPagesAPI中设置buildTime=new Date()
,然后在pageContext中传递构建时间。但是在将它传递给几个React组件之后,我最终需要将它传递给
。我无法将道具传递给上下文消费者
我提出的最佳解决方案是将构建时间写入文件,然后从文件中加载该信息,这显然很糟糕,因此如果有更好的解决方案,那就太好了。您可以使用GraphQL获取需要的组件中的构建时间(而不是通过上下文提供程序传递)。下面的StaticQuery仅在构建时执行
import React from 'react'
import { useStaticQuery, graphql } from 'gatsby'
const IndexPage = () => {
const data = useStaticQuery(query)
return (
<>
<p>This site was last built on:</p>
<p>{data.site.buildTime}</p>
</>
)
}
export default IndexPage
const query = graphql`
query Info {
site {
buildTime(formatString: "DD/MM/YYYY")
}
}
`
从“React”导入React
从“gatsby”导入{useStaticQuery,graphql}
常量索引页=()=>{
const data=useStaticQuery(查询)
返回(
此站点上次创建于:
{data.site.buildTime}
)
}
导出默认索引扩展
const query=graphql`
查询信息{
场地{
构建时间(格式字符串:“DD/MM/YYYY”)
}
}
`
从