GraphQL 片段缺少数据

问题描述

我是使用 graphql-request 的新手,想尝试使用片段,但注意到一些奇怪的行为。我不确定该行为是来自 graphql-request 还是 Dgraph enter link description hereCloud。

我的第一个问题是查询中的数据顺序确实很重要。

//query
const query = graphql`
    query EntryQuery($id: Float) {
      queryEntry(filter: { id: { eq: $id } }) {
        ...EntryBanner_entry
        images {
          source
        }
      }
    }
    ${EntryBannerFragment}
  `;

const fragment = graphql`
  fragment EntryBanner_entry on Entry {
    title
    images {
      source
      type
    }
  }
`;

这将输出正确的对象:

{
  title: string
  images: { source: string,type: string }[]
}

但是,如果我更改数据和片段的顺序:

const query = graphql`
    query EntryQuery($id: Float) {
      queryEntry(filter: { id: { eq: $id } }) {
        images {
          source
        }
        ...EntryBanner_entry
      }
    }
    ${EntryBannerFragment}
  `;

那么对象是:

{
  title: string
  images: { source: string }[]
}

为什么会这样?我以前用过Relay,数据和片段的顺序无关紧要。

我遇到的另一个问题是,当我有一个片段碰巧在组件树中某处的另一个片段中被复制时。

例如,我有三种不同类型的横幅,每一种都使用描述。所以我将三种类型的横幅作为片段,每一种都包含一个描述片段。

const fragment = graphql`
  fragment EntryBanner_entry on Entry {
    ...EntryBannerWithPoster_entry
    ...EntryBannerWithBanner_entry
    ...EntryBannerWithText_entry
  }
  ${EntryBannerWithBannerFragment}
  ${EntryBannerWithPosterFragment}
  ${EntryBannerWithTextFragment}
`;

//here is an example of EntryBannerWithTextFragment (note each banner fragment has the description fragment

const fragment = graphql`
  fragment EntryBannerWithText_entry on Entry {
    title
    originalTitle
    releaseYear
    movieLength
    genres
    ...EntryDescription_entry
  }
  ${EntryDescriptionFragment}
`;

但是,由于EntryBanner_entry中加入了多个片段,因此会导致此错误

There can be only one fragment named "EntryDescription_entry".: {"response":{"errors":[{"message":"There can be only one fragment named \"EntryDescription_entry\".",...}

为什么会这样?它似乎对组件不太友好。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...