Gatsby - 将状态属性传递给 GraphQL 查询变量/参数?

2023-12-29

我是 gatsby 和 graphQL 的新手,正在尝试使用此堆栈构建一个网站,该网站将显示音乐会/活动列表。

我的问题是:

是否可以将数据从我的应用程序状态传递到我的查询变量。在哪里连接我的状态和 graphQL 查询?

这是我的代码:

class IndexPage extends Component {

state = {
  term: '',
  date: null,
}


onTermChange(term) {
  this.setState({ term });
}

render() {
  return (
  <Layout>
    <SearchForm
      onTermChange={this.onTermChange.bind(this)}
      value={this.state.term}
    />

    <Calendar
      onChange={date => this.setState({ date })}
      value={this.state.date}

    />

    <StaticQuery
      query={graphql`
      query ComingEvents {
        allEvent(sort: {fields: [dateAndTime], order: ASC}) {
          edges {
            node {
              id
              name
              dateAndTime
              venue
              ticketsLink
              city
              thumbnail {
                id
                url
              }
            }
          }
        }
      }`
      }
      render={ data => (
        <EventsList
        events={data.allEvent.edges}
         />
      )}
     />
</Layout>

);

} }

基本上这就是我想做的:

  1. 当搜索字段的值形成this.state.term更改,我想将其作为 $name 参数传递并查询新结果。
  2. 当日历中选取的日期值时this.state.date更改,我想将其作为 $dateAndTime 参数传递并查询新结果。

如果是其他人遇到了。您不能像 @ghuntheur 所说的那样传递变量,但如果您想在构建时获取一些列表,这是有用的示例:

export const useGraphFlags = () => {
    const { allFile } = useStaticQuery(
        graphql`
            query GraphAllFile {
                allFile(filter: {relativeDirectory: { eq: "svg/flags" }}) {
                    nodes {
                        relativePath
                        publicURL
                        relativeDirectory
                    }
                }
            }
        `
    );
    return allFile.nodes;
};

稍后在组件中:

const flags = useGraphFlags();

return flags.map(file => (
    <img 
      key={file.relativePath} 
      src={file.publicURL} 
      alt=""
    />
));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Gatsby - 将状态属性传递给 GraphQL 查询变量/参数? 的相关文章

随机推荐

  • 如何隐藏 Mac/OSX 拖放 JTable 选择框

    在 JTable 上执行拖放操作时 拖动时会出现所选单元格 选择框 的轮廓 我怎样才能覆盖该行为并且除了特殊光标之外不显示任何内容 在 Windows 和 OSX 中运行以下代码显示了我想要覆盖的行为 import java awt Bor
  • ASP.NET 身份检查用户角色不起作用

    我有一个 ASP NET MVC 5 应用程序 我使用标准 ASP NET 身份提供程序进行用户和角色管理 重要的是我使用自己的存储库项目中的 IdentityUser 但这似乎没问题 我可以注册 登录 编辑用户并管理他们的角色 我使用以下
  • Azure Devops - 按代理池 ID 获取发布定义

    我试图使用 NET 客户端库查找配置为使用特定代理池的所有构建和版本 假设agentPoolId 我可以得到所有的构建定义 如下所示 connection is of type VssConnection using var buildCl
  • 配置 EMR 以使用 s3a 而不是 s3 进行 Spark.sql 调用

    我对 Spark sql 的所有调用都失败 并在堆栈跟踪中出现错误 1 below 更新 2我已经把注意力集中在这个问题上 它是 sts AssumeRule 的 AccessDenied 任何线索都值得赞赏 User arn aws st
  • 在 Spark 2.3.0 的结构化流中禁用 _spark_metadata

    我的结构化流应用程序正在写入镶木地板 我想摆脱它创建的 spark metadata 文件夹 我使用了下面的属性 看起来不错 conf spark hadoop parquet enable summary metadata false 当
  • 如何从 Java 中的套接字获取客户端名称?

    抱歉 简单的问题 但我无法使用谷歌或教科书在任何地方找到答案 我有一个简单的服务器 用户通过 java 中的套接字连接到该服务器 我想使用这个 Java 套接字来检索用户客户端名称 这可能吗 我知道我可以使用 getInetAddress
  • 数据绑定到以编程方式创建的数据表

    假设我有一个这样的数据表 DataTable dt new DataTable Woot dt Columns AddRange new DataColumn new DataColumn ID typeof System Guid new
  • 使用 JavaScript 对 DIV 进行动画处理会在 Chrome 上呈现工件

    作为一个实验 我尝试在 JavaScript 中复制 AS3 的 Sprite 功能 而不使用画布对象 我认为使用绝对定位的 div 并操作它们的 css 属性是理所当然的 但是在 Chrome 中 动画引入了奇怪的工件 似乎是因为重绘问题
  • 如何同时支持es模块和commonjs模块

    我们从 npm 安装的一些包同时支持 commonjs 和 es 模块 这些包可以按如下方式导入 import express from express or const express require express 我创建了一个包我已经
  • Delphi 是否提供用于表单创建通知的事件处理程序?

    Delphi 是否提供某种用于表单创建的事件或挂钩 或者更一般地说 表单生命周期事件 因此 如果在代码中的某处创建并显示表单 模态或非模态 动态或在通常的应用程序启动阶段 Delphi 会调用一个事件处理程序 该处理程序允许在显示之前记录
  • Bacon.js 超出最大调用堆栈

    我正在尝试生成类似的流Bacon fromPoll for requestAnimationFrame 为什么下面的代码会产生一个 超出最大调用堆栈 error function rafSequence var raf Bacon from
  • 如何以编程方式缓存/下载谷歌地图v2图块?

    如何以编程方式缓存 下载谷歌地图 v2 图块 可能吗 Bcos根据这个prntscr com 3cyiqf http prntscr com 3cyiqf这是不可能的 但正如我所看到的这个链接使用本地图块的 TileProvider htt
  • 删除名为 xfdf:field(带有命名空间)的 XML 标记

    我想从 XML 文件中删除 XML 元素 我要删除的标签名为 xfdf field 如何在 xslt 中指定这一点 我尝试了这个 但收到一条错误消息 org apache xpath domapi XPathStylesheetDOM3Ex
  • 如何签署 Firefox 扩展

    我想签署 Firefox 扩展 我在互联网上搜索了有关签署扩展程序的信息并找到了 URLhttps developer mozilla org en docs Signing a XPI https developer mozilla or
  • Webpack:让它忽略找不到的源文件?

    我正在使用 snabbdom js 和 webpack 构建 JS 前端应用程序 我有一个非常简单的 snabbdom 视图和将其捆绑在一起的 webpack 配置 当我在 chrome 中加载捆绑包时 我会在控制台中看到所有这些内容 我可
  • 从 3D 平面上的 3D 点检索 2D 坐标

    我有一个点 x y z 位于由 ax by cz d 0 定义的平面上 我试图找出 x y 相对于平面的关系 它的起点为 x0 y0 z0 x 轴由 1 0 和y 轴由 0 1 定义 我的主要目标是让鼠标单击表面 并了解特定表面上的 2D
  • Servlet.init() 和 Filter.init() 调用顺序

    java web 应用程序中 Servlet init 和 Filter init 方法按什么顺序调用 首先调用哪个 是否所有 Servlet init 方法都先于任何 Filter doFilter 方法调用 过滤器总是在 webapp
  • 每次操作后关闭访问数据库还是保持打开状态以供以后操作更好

    我正在开发一个 VB NET 项目 该项目从 Access DB 文件中获取数据 我遇到的所有代码片段都会打开数据库 执行操作并为每个操作关闭它 目前 我在应用程序运行的整个过程中都打开数据库 并且仅在应用程序退出时才将其关闭 我的问题是
  • Sequelize 中的复合主键

    有人可以建议如何在同一个表中的两列上设置主键 var relation user id type DataTypes INTEGER organization id type DataTypes INTEGER 我想定义一个主键 例如 pr
  • Gatsby - 将状态属性传递给 GraphQL 查询变量/参数?

    我是 gatsby 和 graphQL 的新手 正在尝试使用此堆栈构建一个网站 该网站将显示音乐会 活动列表 我的问题是 是否可以将数据从我的应用程序状态传递到我的查询变量 在哪里连接我的状态和 graphQL 查询 这是我的代码 clas