Reactjs 如何访问react类组件中的GraphQL查询数据
我在Reactjs 如何访问react类组件中的GraphQL查询数据,reactjs,ecmascript-6,graphql,gatsby,Reactjs,Ecmascript 6,Graphql,Gatsby,我在gatsby的/src/components目录中有一个名为“Header”的react组件,定义如下: import React, { Component } from "react" import { Link } from 'gatsby' import { StaticQuery, graphql } from 'gatsby' import Img from "gatsby-image" import "./header.css" class Header extends Com
gatsby
的/src/components
目录中有一个名为“Header”的react组件,定义如下:
import React, { Component } from "react"
import { Link } from 'gatsby'
import { StaticQuery, graphql } from 'gatsby'
import Img from "gatsby-image"
import "./header.css"
class Header extends Component {
constructor(props) {
super(props);
}
render() {
return(
<Img fixed={data.file.childImageSharp.fixed} />
)
}
}
export default Header
export const query = graphql`
query {
file(relativePath: { eq: "logo.png" }) {
childImageSharp {
# Specify the image processing specifications right in the query.
# Makes it trivial to update as your page's design changes.
fixed(width: 125, height: 125) {
base64
}
}
}
}
`
import React,{Component}来自“React”
从“盖茨比”导入{Link}
从“gatsby”导入{StaticQuery,graphql}
从“盖茨比图像”导入Img
导入“/header.css”
类头扩展组件{
建造师(道具){
超级(道具);
}
render(){
返回(
)
}
}
导出默认标题
export const query=graphql`
质疑{
文件(relativePath:{eq:“logo.png”}){
childImageSharp{
#在查询中正确指定图像处理规范。
#使页面的设计更改时更新变得很简单。
固定(宽度:125,高度:125){
base64
}
}
}
}
`
我尝试将StaticQuery
与函数组件一起使用,但没有成功。所以,我想坚持使用类组件语法
在这里,查询在http://localhost:8001/___graphql
如何访问react
类组件中的查询数据?只有页面组件文件才能导出query
变量进行查询,如示例所示。参见盖茨比文件中的
下面是一个使用类组件的StaticQuery
示例。您必须用功能组件包装类组件才能使其正常工作
从“React”导入React
从“gatsby”导入{graphql,StaticQuery}
类CoolThing扩展了React.Component{
渲染(){
console.log(this.props)
返回(
{this.props.site.siteMetadata.title}
{/*有条件地呈现目录*/}
{this.props.directories.edges&&(
{this.props.directories.edges.map((目录)=>{
return- {directory.node.name}
})}
)}
)
}
}
导出默认值()=>(
(
)}
/>
)
关于这个话题
您也可以考虑使用.< /p> @ BeBaCHEM.YES并获得<代码> Type错误:无法读取未定义的ErrLogRe>代码>控制台的属性“文件”。我想你会发现数据道具中嵌套了这些信息。可能this.props.data.file
我想。嘿@Valay,你必须对组件使用StaticQuery。在非页面组件中,盖茨比将忽略全局查询(如本例中使用的)。StaticQuery有什么问题?另外,如果它位于页面组件中,则需要从props获取它,因此this.props.data.file…
就像@staypuftman指出的那样out@Derek阮:是的,你是对的。我使用了StaticQuery
和{…props},现在它工作正常。但还有另一个问题——因为我有一个功能组件,如何添加窗口滚动事件监听器。之前,我使用的是类组件,而窗口滚动在componentDidMount中运行良好。