Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 盖茨比:如何在构建时将数据传递给反应上下文_Reactjs_Gatsby - Fatal编程技术网

Reactjs 盖茨比:如何在构建时将数据传递给反应上下文

Reactjs 盖茨比:如何在构建时将数据传递给反应上下文,reactjs,gatsby,Reactjs,Gatsby,我有一个盖茨比网站,我正在使用React上下文提供一个主题(标题、页脚、样式等)。现在我想在页脚添加上一次构建时间,例如“上次更新:11月13日23:08”。我该怎么做 显然,如果我只是将构建时间放在上下文提供程序中或创建它的React组件中的任何位置,那么时间将随着每次刷新而更新(与每次构建相反) 我想我应该能够在gatsby node.jscreatePagesAPI中设置buildTime=new Date(),然后在pageContext中传递构建时间。但是在将它传递给几个React组件

我有一个盖茨比网站,我正在使用React上下文提供一个主题(标题、页脚、样式等)。现在我想在页脚添加上一次构建时间,例如“上次更新:11月13日23:08”。我该怎么做

显然,如果我只是将构建时间放在上下文提供程序中或创建它的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”) } } `