【问题标题】:Rerunning query in Gatsby during runtime在运行时在 Gatsby 中重新运行查询
【发布时间】:2020-06-13 09:49:58
【问题描述】:

我正在 Gatsby 中使用 Prismic 作为我的 CMS 来构建一个网站,到目前为止一切都很好。虽然我遇到了一些问题,但我无法弄清楚。

我希望能够让从 Prismic 中提取的所有帖子都可以按标签过滤并默认显示所有帖子。

我已经设法设置了一个数组来存储用户在页面上选择的标签,并且我发现我可以将一个静态值数组传递到查询中,以便在构建时过滤帖子。

但是,我不知道如何在构建时获取所有帖子并在未选择过滤器时显示所有帖子。但是当标签被选中并且在活动标签数组中只显示包含这些标签的帖子。

据我了解,Gatsby 不允许在运行时运行查询,只会在构建期间运行它们。我还尝试过有条件地渲染模板组件的想法,并根据该帖子的标签是否包含在活动标签数组中而对其进行更改,但那里也没有运气。

我尝试询问 prismic 支持,但他们说他们以前没有使用过此用例的用户。

任何想法将不胜感激。

【问题讨论】:

  • 像allPrismicPost 这样没有过滤器的东西应该会给你所有的帖子。如果您需要更多帮助,请分享一些代码,以便我们了解您的问题所在。
  • 如前所述,我目前可以很好地查询所有帖子,甚至可以手动查询数组中的标签。我猜真正的问题是:是否可以在运行时重新查询 API 而无需重建站点?如果是这种情况,您将如何将数组传递给graphql?如果无法在运行时重建站点,那么我将需要研究如何过滤数据。

标签: javascript reactjs gatsby prismic.io


【解决方案1】:

因为 Gatsby 是静态的,所以没有运行服务器来响应请求。

如果您想实时获取过滤后的数据,您可以使用 Prismic 的 GraphQL API 客户端,然后您可以将该信息传递到相关组件中进行显示。但是,这些数据不会通过 Gatsby 的 GraphQL 层,因此 Gatsby 正在执行的任何修改、扩展或副作用(例如图像转换、自定义分辨率、备注等)都将不可用。

如果您已经将数据加载到客户端(即,您正在获取所有要过滤的帖子元数据),更简单的方法是在客户端过滤数据。

【讨论】:

    猜你喜欢
    • 2020-11-02
    • 2019-12-21
    • 2021-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-14
    相关资源
    最近更新 更多