1

我无法以正确的顺序呈现一组小部件。我正在使用 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,现在顺序是正确的。

4

1 回答 1

0

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

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

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

于 2020-02-26T16:33:25.317 回答