1

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

0 回答 0