Что такое вызовы GraphQL в атрибуте rangeBehaviors конфигурации мутатора RANGE_ADD?

документы описывают rangeBehaviors как:

Карта вызовов GraphQL с поведением, которое мы хотим, чтобы Relay продемонстрировал при добавлении нового края к соединениям под влиянием этих вызовов. Поведение может быть одним из «добавлять», «добавлять» или «удалять».

Пример в документах:

rangeBehaviors: {
  // When the ships connection is not under the influence
  // of any call, append the ship to the end of the connection
  '': 'append',
  // Prepend the ship, wherever the connection is sorted by age
  'orderby(newest)': 'prepend',
}

и в другом примере в репозиторий примеров todos у вас есть:

rangeBehaviors: {
  '': 'append',
  'status(any)': 'append',
  'status(active)': 'append',
  'status(completed)': null,
}

Что такое «вызов GraphQL» в этом случае? Что значит быть «под влиянием» такого звонка?


person Dmitry Minkovsky    schedule 10.11.2015    source источник


Ответы (1)


Когда вы запрашиваете поле подключения в Relay, вы потенциально можете указать аргументы помимо стандартных аргументов разбиения на страницы first, last, before и after.

В приведенном выше примере TodoMVC мы квалифицируем запрос по текущему фильтру состояния. Смысл кода TodoMVC, который вы показали, заключается в том, что мутация должна добавлять новую задачу для запросов, которые фильтруют статусы "active" или "any" (или статус по умолчанию), но не для запросов, которые фильтруют только статус "completed" (который имеет смысл в контексте, так как мутация добавляет новую активную задачу).

person taion    schedule 13.11.2015
comment
Спасибо, Taion. Итак, вы говорите, что экземпляр конфигурации мутации рассматривает ключи в объекте rangeBehaviors как комбинации имени параметра/аргумента-значения для параметров, которые существуют в поле подключения? Таким образом, предположим, что поле соединения с именем todos параметризовано в status (в дополнение к first, last и т. д.), ключ в rangeBehaviors, называемый status(any), интерпретируется мутатором так, как если бы параметр status поля соединения имел значение any, поведение должно быть append? - person Dmitry Minkovsky; 14.11.2015
comment
Это в основном правильно - вызов описывает значения всех аргументов поля (кроме стандартных параметров подключения). Должно быть точное совпадение. Если совпадений нет, Relay повторно выберет все соединение. - person taion; 15.11.2015
comment
Мы, вероятно, должны удалить ссылки на вызов из документов. Вызов был концепцией в исходной внутренней версии GraphQL FB (например, things.first(10).fizz(5)); в выпуске с открытым исходным кодом они стали аргументами поля (например, things(first: 10, fizz: 5)). - person wincent; 16.11.2015