我正在为我的项目使用apollo-graphql。最近我遇到了问题,我从 addSitesPage 添加了网站,但 SitesPage 没有显示最近添加的网站。所以我使用了 refetchQueries ,它运行良好,最近添加的网站显示,但因为它不是一个乐观的解决方案,所以我试图在运行变异后更新商店,但每当我更新它,它清除所有以前添加的网站和页面没有显示。但是当我刷新页面时,所有网站都会再次出现。我确信我的数据连接逻辑存在问题,这是我的更新,它也更新了商店
this.props.mutate({
variables : { data : variables},
update: (store, { data: { Site : { SiteCreate } } }) => {
// Read the data from the cache for this query.
const data = store.readQuery({query: SitesFetchQuery });
data.viewer.sites.edges.push(SiteCreate);
// After executing the below statement store clears all the data
store.writeQuery({ query: SitesFetchQuery, data });
},
});
突变查询:
mutation SiteSaveMutation($data: JSON!) {
Site {
SiteCreate(input: {data: $data}) {
obj {
id
name
active
id
siteTypeId
ownerId
location {
lat
lng
}
}
}
}
}
网站提取查询:
query SitesFetchQuery {
viewer {
sites(where:{active: true}) {
edges {
node {
id
name
image
siteType {
id
name
icon
}
}
}
}
}
}