Я пытаюсь использовать ApolloClient 2.1 с новым компонентом мутации.
Простые варианты использования работают, но теперь у меня есть кое-что более сложное.
Чего я хочу добиться, так это запросить данные и поместить их в список, затем отсортировать этот список (здесь через реагирующий на сортировку-hoc) и после сортировки я хочу обновить новую позицию для всех элементов в списке.
Итак, основа примерно такая: она работает для простых запросов:
const query = gql'
{
items( order:{by:"position", direction:"desc"}) {
id
name
position
}
}'
const ItemView extends Component {
onSortEnd = ({ oldIndex, newIndex }) => {
console.log("Sort ended: ", oldIndex, newIndex);
}
render() {
<Query query={query}>
{({ loading, data, error }) => {
if (loading) return <p>Loading...</p>;
if (error) return <p>Error</p>;
return (
<ItemList items={data.items} onSortEnd={this.onSortEnd} />
)
}}
</Query>
}
}
Теперь я действительно борюсь во многих частях, чтобы сделать мутацию.
Я думаю, что мне нужно обернуть компонент мутации. Но как я могу предоставить GraphQL Query там, потому что я хочу сделать пакетную мутацию с похожим запросом, запускаемым несколько раз, например,
mutation {
updateItem1: updateItem(id: 457092155, input: {position: 1}) {
item {
id
}
ok
errors
},
updateItem2: updateItem(id: 54489270, input: {position: 2}) {
item {
id
}
ok
errors
},
... // much more mutations, one for each item in the list
}
Итак, мой главный вопрос: как передать мутацию GraphQL с динамическим количеством мутаций в компонент Mutation? Или я должен сделать это совершенно по-другому?
Большое спасибо за любые подсказки