如何在前端代码中使用 GraphQL 枚举(例如在 <select> 中)?

Posted

技术标签:

【中文标题】如何在前端代码中使用 GraphQL 枚举(例如在 <select> 中)?【英文标题】:How to use GraphQL enums in frontend code (e.g. in a <select>)? 【发布时间】:2019-05-29 04:39:39 【问题描述】:

我有一个简单的 GraphQL 枚举,定义如下:

enum PassType 
    DailyFit
    StarterFit
    MonthlyFit
    QuarterlyFit
    DoubleFit
    MultiFit10
    MultiFit20

我想在&lt;select&gt; 标记中重复使用这些值。我使用 Apollo 和 AWS Appync 作为 GraphQL 基础设施。有没有办法从 Apollo 客户端获取这些,而无需在前端手动复制它们?

【问题讨论】:

【参考方案1】:

您可以利用introspection 查询来获取有关架构中任何特定类型的信息,包括枚举。利用 Apollo 的 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>

【讨论】:

嗨,Daniel,我需要使用 reactPWALink-state apollo 配置一个项目,能否请您指导到一些教程,这样我就可以在最好的水平上配置它。

以上是关于如何在前端代码中使用 GraphQL 枚举(例如在 <select> 中)?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 graphql-tools 使用或解析枚举类型?

如何在 apollo graphQL 服务器的枚举值中添加特殊字符?

如何在graphql中获取所有枚举值

如果它们来自数据源,如何在 graphql 模式中表示枚举?

如何在 GraphQL 模式中定义嵌套枚举类型

如何将枚举类型字段从反应发送到 GraphQL/AWS appsync