从 commitMutation 的更新程序函数更新存储时出现问题
Posted
技术标签:
【中文标题】从 commitMutation 的更新程序函数更新存储时出现问题【英文标题】:Issue while updating store from updater function of commitMutation 【发布时间】:2019-07-18 11:44:56 【问题描述】:我有一个突变
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一直指向同一个对象。
在更新函数的末尾添加以下行 unlink quoteLine from 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 =>
// ....
,
);
;
尝试这样的事情,如果解决了,请告诉我:)。
【讨论】:
以上是关于从 commitMutation 的更新程序函数更新存储时出现问题的主要内容,如果未能解决你的问题,请参考以下文章
错误:找不到要更新的行。自上次读取以来,某些值可能已更改。关于将提供程序从 SQLOLEDB 更改为 MSOLEDBSQL