我正在使用Prismic作为我的CMS在盖茨比(Gatsby)建立一个网站,到目前为止,它很棒。尽管我遇到了一个问题,但我不知道。
我希望能够将所有从Prismic拉出的帖子都可以按标签过滤,并默认显示所有内容。
我设法建立了一个数组,该数组存储用户在页面上选择的标签,并且我发现可以将静态值数组传递给查询以在构建时过滤帖子。
但是,我无法确定的是如何在构建时获取所有帖子,以及如何在未选择过滤器的情况下显示所有帖子。但是,当标签被选中,并在有源标签阵列仅显示包含这些标记的讯息。
据我了解,Gatsby不允许查询在运行时运行,而只会在构建期间运行。我还考虑过有条件地渲染模板组件的想法,并根据活动标签数组中是否包含该帖子的标签来更改模板组件,但那里也没有运气。
我尝试寻求棱柱形的支持,但是他们说他们以前没有这个用例的用户。
任何想法将不胜感激。
答案 0 :(得分:1)
由于Gatsby是静态的,因此没有服务器在运行以响应请求。
如果您想实时获取过滤后的数据,则可以使用Prismic的GraphQL API客户端,然后可以将该信息传递到相关组件中进行显示。不过,这些数据不会通过Gatsby的GraphQL层,因此Gatsby正在执行的任何修改,扩展或副作用(例如图像转换,自定义分辨率,备注等)将不可用。
如果您已经将数据加载到客户端上(也就是说,您正在获取所有您将要过滤的帖子元数据),那么更简单的方法是简单地过滤客户端数据。