Проблема при обновлении магазина из функции обновления commitMutation

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

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');
}

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

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

payload.setValue(null, 'quoteLine');

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

1 ответ

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

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

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

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

Другие вопросы по тегам