Как сделать пакетные мутации с клиентом Apollo - PullRequest
0 голосов
/ 04 мая 2018

Я пытаюсь использовать ApolloClient 2.1 с новым компонентом мутации.

Простые варианты использования работают, но теперь у меня есть кое-что более сложное.

То, чего я хочу добиться, - это запросить данные и поместить их в список, затем отсортировать этот список (здесь через Reaction-sortable-hoc), и после сортировки я хочу обновить новую позицию для всех элементов в списке.

Итак, основа примерно такая, которая работает для простых запросов:

const query = gql`
{
  items( order:{by:"position", direction:"desc"}) {
    id
    name
    position
  }
}

`

const ItemView расширяет компонент {

     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? Или я должен сделать это совершенно по-другому?

Большое спасибо за любые подсказки

...