Установить переменную $ для имени аргумента (НЕ ЗНАЧЕНИЕ АРГУМЕНТА) в graphql

я использовал Apollo в ReactNative Project

Я хочу получить некоторые продукты с сервера с компонентом запроса в ApolloClient, моя схема запроса похожа на эту

 products(isExisting:true) {
    id
    name
  }

этот запрос дает мне все доступные продукты, а также у меня есть этот запрос с другим аргументом

products(minPrice:$price)
   id
   name
 } 

теперь я хочу создать программу для условного выбора между двумя аргументами: в плоскости [A] используйте (isExisting) arg и в плоскости [B] используйте (minPrice)

Мое первое и глупое решение - создать 2 разных компонента запроса, это как-то иначе, например, установить переменную для таких аргументов

 products($choose:$value)   

также я знаю о директиве в graphql https://graphql.github.io/learn/queries/#directives

но я думаю, это только для поля

также мое второе решение для решения этой проблемы, поместив переменную javascript в '', например

   render() {

      const arg = 'minPrice';

          return(
               <Query
                  variables = {{ }}
                    query = {gql`

                           query {
                              products(${arg}:100) {
                                 id
                                 name }

Я проверил это, работает у меня хорошо, но я хочу знать, что это хороший и лучший способ

Умерло ли Create-React-App?
Умерло ли Create-React-App?
В этом документальном фильме React.dev мы исследуем, мертв ли Create React App (CRA) и какое будущее ждет этот популярный фреймворк React.
Освоение React Native: Пошаговое руководство для начинающих
Освоение React Native: Пошаговое руководство для начинающих
React Native - это популярный фреймворк с открытым исходным кодом, используемый для разработки мобильных приложений. Он был разработан компанией...
В чем разница между react native и react ?
В чем разница между react native и react ?
React и React Native - два популярных фреймворка для создания пользовательских интерфейсов, но они предназначены для разных платформ. React - это...
От React к React Native: Руководство для начинающих по разработке мобильных приложений с использованием React
От React к React Native: Руководство для начинающих по разработке мобильных приложений с использованием React
Если вы уже умеете работать с React, создание мобильных приложений для iOS и Android - это новое приключение, в котором вы сможете применить свои...
Хуки React: что это такое и как их использовать
Хуки React: что это такое и как их использовать
Хуки React - это мощная функция библиотеки React, которая позволяет разработчикам использовать состояние и другие возможности React без написания...
1
0
272
1

Ответы 1

Я думаю, что последнее решение - хорошая идея для этого подхода, также вы должны знать директиву, которая просто работает для поданных

 products(isExist:true) {
    name @include if (false/true)
 }

это означает, что если условия возвращают True, вы получаете поле (имя), а если возвращаете False, поле (имя) не включается в ваш запрос

также вы можете эту директиву

 products(isExist:true) {
    name @skip if (false/true)
 }


     @include(if: Boolean) Only include this field in the result if the            argument is true.
      @skip(if: Boolean) Skip this field if the argument is true.

спасибо @parisa, но я думаю, что это грязный способ, должен существовать лучший способ решить эту проблему, я думаю, но спасибо, что дали мне хорошую информацию о директиве

hamidreza nikoonia 07.06.2018 20:24

Другие вопросы по теме