Я рассматриваю возможность использования React Relay или клиента Apollo. Мне нравится идея GraphQL как языка запросов, который может быть выполнен для любого API или хранилища данных.
Однако меня удивляет необходимость вручную (и обязательно) обновить хранилище / кеш после простой мутации, такой как добавление элемента todo в список. Вот документация для функций обновления / обновления:
http://facebook.github.io/relay/docs/en/mutations.html
https://www.apollographql.com/docs/react/essentials/mutations.html
Почему требуется определенная пользователем функция обновления?
В частности, почему я должен написать функцию средства обновления для обработки этих двух запросов GraphQL последовательно?
//Create todo item
mutation createTodo($input: TodoInput!) {
createTodo(input: $input) {
id
name
desc
}
}
mutationVariables = { input: { name: 'Shopping', desc: 'Get groceries' }};
//Select all todos
query {
todos {
id
name
desc
}
}
Почему запрос todos не возвращает автоматически новый элемент todo? Это ТОЧКА декларативного языка запросов IMO.