Проблема при обновлении магазина из функции обновления 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 => {
// ....
},
});
};
Попробуйте что-то вроде этого и дайте мне знать, если это исправит:).