这似乎可行,但访问cache.watches
Set
? :S
诀窍是访问给定查询的缓存变量,保存它并使用给定的查询变量执行重新获取。就我而言,在创建项目后:
export const getGraphqlCacheVariables = (queryName, cache) => {
if (cache.watches) {
const watch = [...cache.watches].find(w => !!w.query[queryName]);
if (watch) {
return watch.variables;
}
}
};
mutation
update
功能:
let variables;
const update = (cache, { data }) => {
if (data && data.createTask && data.createTask.task) {
variables = getGraphqlCacheVariables('GetTasks', cache);
}
}
和refetchQueries
功能:
const refetchQueries = () => {
if (variables && Object.keys(variables).length > 0) {
return [{ query: GET_TASKS, variables }];
}
return [];
}
Bot update 和 refetchQueries 函数应该可以访问variables
变量
与Medium 文章 中的解决方案相比的好处是,您不会删除具有不同变量的给定查询 (GET_TASKS) 的缓存数据。