Как использовать перечисления GraphQL в коде внешнего интерфейса (например, в <select>)? - PullRequest
0 голосов
/ 02 января 2019

У меня есть простое перечисление GraphQL, определенное следующим образом:

enum PassType {
    DailyFit
    StarterFit
    MonthlyFit
    QuarterlyFit
    DoubleFit
    MultiFit10
    MultiFit20
}

Я хотел бы повторно использовать эти значения в теге <select>. Я использую Apollo и AWS Appync в качестве инфраструктуры GraphQL. Есть ли способ получить их из клиента Apollo, не дублируя их на внешнем интерфейсе вручную?

1 Ответ

0 голосов
/ 02 января 2019

Вы можете использовать запрос introspection , чтобы получить информацию о любом конкретном типе в вашей схеме, включая перечисления. Используя компонент Query Аполлона, это будет выглядеть примерно так:

const PASS_TYPE_QUERY = gql`
  query GetEnum {
    __type(name: "PassType") {
      enumValues {
        name
      }
    }
  }
`

<Query query={PASS_TYPE_QUERY}>
  {({ data }) => {
    // Handle loading/errors as usual
    if (!data.__type) {
      return null
    }
    return (
      <select>
        {data.__type.enumValues.map(enumValue => (
          <option value={enumValue.name}>{enumValue.name}</option>
        ))}   
      </select>
    )
  }}
</Query>
...