我正在为我的项目使用 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
}
}
}
}
}
}