Javascript 更改列表筛选器时更新Apollo存储
我有一个如下所示的graphql模式:Javascript 更改列表筛选器时更新Apollo存储,javascript,graphql,apollo,react-apollo,Javascript,Graphql,Apollo,React Apollo,我有一个如下所示的graphql模式: type User { entries(status: EntryStatus): [Entry] } type Mutation { updateEntry(status: EntryStatus): Entry } 我可以按状态(即枚举)筛选条目列表,并可以更新条目的状态。我想在更新状态时更新存储,以便条目显示在右侧列表中(entries(status:FOO)到entries(status:BAR)) 我知道我可以用这个方
type User {
entries(status: EntryStatus): [Entry]
}
type Mutation {
updateEntry(status: EntryStatus): Entry
}
我可以按状态(即枚举)筛选条目列表,并可以更新条目的状态。我想在更新状态时更新存储,以便条目显示在右侧列表中(entries(status:FOO)
到entries(status:BAR)
)
我知道我可以用这个方法更新存储
但是由于我无法访问更新中的旧数据(以前的条目.status),我如何知道从哪个列表中删除条目?
(除了按状态枚举所有列表并删除更新的条目(如果我找到它的话)…您需要先
store.readQuery()
,然后将新数据写入存储
有点像这样:
const EntriesQuery = 'yourQueryHere';
const withMutation = graphql(updateEntryMutation, {
props: ({ mutate }) => ({
updateEntry: updateEntryInput =>
mutate({
variables: { updateEntryInput },
update: (store, { data: { updateEntry }}) => {
const data = store.readQuery({ query: EntriesQuery });
data.entries.push(updateEntry)
store.writeQuery({ query: EntriesQuery, data })
})
})
});
const EntriesQuery = 'yourQueryHere';
const withMutation = graphql(updateEntryMutation, {
props: ({ mutate }) => ({
updateEntry: updateEntryInput =>
mutate({
variables: { updateEntryInput },
update: (store, { data: { updateEntry }}) => {
const data = store.readQuery({ query: EntriesQuery });
data.entries.push(updateEntry)
store.writeQuery({ query: EntriesQuery, data })
})
})
});