【问题标题】:Array of objects not rendering in order as set in CMS, using Kentico Kontent使用 Kentico Kontent 的对象数组未按 CMS 中设置的顺序呈现
【发布时间】:2020-06-02 06:23:51
【问题描述】:

我无法以正确的顺序呈现一组小部件。我正在使用 graphql 从 kentico 的 kontent.ai 中查询页面数据。 cms 中的页面有一个富文本字段,其中可以包含许多小部件。但是,当我控制台记录来自 graphql 数据对象的小部件项数组时,该数组不是按顺序排列的。例如,如果cms中的顺序是:

文本项、视频项、图像项

那么在对象数组中,顺序是这样的:

[图片项、文本项、视频项]

重要:这似乎只发生在我在富文本字段中使用超过 10 个小部件时。如果我最多使用十个小部件,则顺序是正确的。但如果我使用超过 10 个,则顺序不正确。

这很奇怪,因为它在我的本地或实时站点上不是按顺序呈现的,但它在我的本地同事上按顺序呈现(即使在呈现超过 10 个项目的页面上也是如此)。我们使用的是同一个分支,代码没有区别。你知道为什么会这样吗?

有什么方法可以确保数组中的顺序保持不变,就像在 cms 中一样?

这是我的查询的简化版本(它是未正确排序的 linked_items 数组):

query workDetailQuery($slug: String!) {
kenticoCloudItemWorkDetailPage(fields: { slug: { eq: $slug } }) {
    body_text {
        linked_items {
            ... on KenticoCloudItemStatsBreaker {
                internal {
                    type
                }
            }
            ... on KenticoCloudItemSectionBlock {
                internal {
                    type
                }
            }
            ... on KenticoCloudItemQuoteWithImages {
                internal {
                    type
                }
            }
        }
    }
}

}

这是一个 gatsby 项目(版本 2.0.19),我正在使用 gatsby-source-kentico-cloud 包。

更新 所以我们设法弄清楚了!只是我机器上的默认节点版本和 netlify 使用的节点版本是 10.19.0。我们将两个版本(在我的机器上和 netlify 上)都更新到了 12.13.0,现在顺序是正确的。

【问题讨论】:

    标签: javascript arrays graphql gatsby kentico-kontent


    【解决方案1】:

    我可以在 gatsby-source-kontent v4.3.0 上重现这种行为,在我看来,这就像源插件中的一个错误。

    根据source code,它确实应该保留来自 CMS 的订单 - 它在 Delivery API 响应中的顺序也是正确的。您能否在此存储库中提交错误,以便我进一步调查?

    编辑:此行为是由过时的节点版本引起的。在 v12 上运行良好。

    【讨论】:

      猜你喜欢
      • 2021-03-30
      • 1970-01-01
      • 1970-01-01
      • 2018-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-08
      • 2015-02-10
      相关资源
      最近更新 更多