Как использовать перечисления GraphQL в коде внешнего интерфейса (например, в <select>)?
У меня есть простое перечисление GraphQL, определенное следующим образом:
enum PassType {
DailyFit
StarterFit
MonthlyFit
QuarterlyFit
DoubleFit
MultiFit10
MultiFit20
}
Я хотел бы повторно использовать эти значения в <select>
тег. Я использую Apollo и AWS Appync в качестве инфраструктуры GraphQL. Есть ли способ получить их из клиента Apollo, не дублируя их на внешнем интерфейсе вручную?
1 ответ
Решение
Вы можете использовать запрос самоанализа для получения информации о любом конкретном типе в вашей схеме, включая перечисления. Используя Аполлона 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>