[英]Can't transform/normalize/modify response of GraphQL query - Apollo Client
任何人都有过修改响应数据的后件的经验?
const parseResponse = new ApolloLink((operation, forward) => {
return forward(operation).map((response) => {
response.data.parsed = transformData(response.data)
return response
})
})
const link = parseResponse.concat(networkLink)
这对 websockets 事件非常有效 - 数据被转换,添加到数据response.data
中的这个parsed
字段,但在常规<Query...
请求中,解析字段被删除,因此组件无法读取它。 我已经确认在查询请求中正确调用了此方法,并且还添加了parsed
字段,但是在 afterware 和组件之间的某个地方, parsed
字段被剥离
Apollo Client v3 引入了一个用于自定义缓存字段行为的功能:
您可以自定义 Apollo 客户端缓存中各个字段的读取和写入方式。 为此,您
FieldPolicy
为给定字段定义一个FieldPolicy
对象。 您可以在与包含该字段的类型对应的任何TypePolicy
对象中嵌套一个FieldPolicy
对象。
以下是将日期字符串解析为 Date 对象的方法:
export const apolloClient = new ApolloClient({
link: ...,
cache: new InMemoryCache({
typePolicies: {
Post: {
fields: {
updatedAt: {
read(time: string) {
return new Date(time);
},
},
},
},
},
}),
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.