[英]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.