Проблема при обновлении магазина из функции обновления commitMutation - PullRequest
0 голосов
/ 25 февраля 2019

У меня есть мутация

mutation createQuoteLineMutation {
    createQuoteLine {
      quoteLine {
        name
        price
        product {
          name
        }
      }
    }
  }

Моя функция обновления выглядит следующим образом.

updater: (store) => {
      const payload = store.getRootField('createQuoteLine');
      const newQuoteLine = payload.getLinkedRecord('quoteLine');
      const quote = store.getRoot().getLinkedRecord('getQuote');
      const quoteLines = quote.getLinkedRecords('quoteLines') || [];
      const newQuoteLines = [...quoteLines, newQuoteLine];
      quote.setLinkedRecords(newQuoteLines, 'quoteLines');
}

Это работает нормально в первый раз, но при последующих мутациях все ранее добавленные кавычки меняютсяк новому я предполагаю, что это потому, что newQuoteLine постоянно указывает на один и тот же объект.

добавление строки ниже в конце функции средства обновления, unlink quoteLine от createQuoteLine также не работает.

payload.setValue(null, 'quoteLine');

Любая помощь в этом отношении высоко ценится.

1 Ответ

0 голосов
/ 03 марта 2019

Я видел довольно похожую проблему, но я не уверен, что это то же самое.Попробуйте передать clientMutationId мутации и увеличить ее.

const commit = (
  input,
  onCompleted: (response) => void,
) => {
  const variables = {
    input: {
      ...input,
      clientMutationId: temp++,
    },
  };

  commitMutation(Environment, {
    mutation,
    variables,
    onCompleted,
    onError: null,
    updater: store => {
      // ....
    },
  });
};

Попробуйте что-то вроде этого и дайте мне знать, если это исправит:).

...