React Apollo Client - 在查询数据进入缓存之前修改它

Posted

技术标签:

【中文标题】React Apollo Client - 在查询数据进入缓存之前修改它【英文标题】:React Apollo Client - modify query data before it goes to cache 【发布时间】:2020-02-11 22:54:15 【问题描述】:

有没有办法在查询响应数据保存到内部缓存之前对其进行修改? 我正在使用 apollo 钩子,但这个问题与任何使用 apollo 客户端(HOC 和组件)的前端方法有关。

const  data, updateQuery  = useQuery(QUERY, 
  onBeforeDataGoesToCache: originalResponseData => 
    // modify data before it is cached? Can I have something like this? 
    return modifiedData;
  
);

显然onBeforeDataGoesToCache 不存在,但这正是我正在寻找的行为。结果中有一个updateQuery 函数,它基本上做了需要的事情,但是在错误的时间。我正在寻找可以在查询突变中用作钩子或中间件的东西。

【问题讨论】:

【参考方案1】:

听起来你想要Afterware,它很像允许在发出请求之前进行操作的中间件,允许你在响应中操作数据,例如

const modifyDataLink = new ApolloLink((operation, forward) => 
  return forward(operation).map(response => 
    // Modify response.data...

    return response;
  );
);

// use with apollo-client
const link = modifyDataLink.concat(httpLink);

【讨论】:

是的!这正是我一直在寻找的。没想到会在apollo-link-http。谢谢!

以上是关于React Apollo Client - 在查询数据进入缓存之前修改它的主要内容,如果未能解决你的问题,请参考以下文章

你如何动态控制 react apollo-client 查询启动?

使用 Apollo Client 为 React 组件动态设置 GraphQL 查询

React- Apollo Client- 结构化组件

React Native Apollo Client 不会获取所有数据

前端的用户角色/权限 - React / GraphQL / Apollo Client

无法在 Apollo GraphQL 的查询中使用 @client @export 变量