我剛剛開始在React應用程序上使用apollo客戶端,並且我停留在緩存中。 我有一個主頁,其中包含查詢產品的ID和名稱以及查詢ID,名稱,說明和圖像的產品頁面的產品列表。Apollo客戶端緩存
我想,如果用戶訪問主頁的拳頭,然後一個特定的產品頁面只做該產品的描述和圖像的查詢,也顯示加載過程中的名稱(因爲我應該已經緩存它)。 我遵循文檔(http://dev.apollodata.com/react/cache-updates.html)的「控制商店」部分,但仍無法解決問題。
當我們進入產品頁面時,完成的查詢仍然要求產品的ID和名稱,而他們應該被緩存,因爲我已經要求他們。
我想我失去了一些東西,但我無法弄清楚。 這裏有點代碼:
// Create the apollo graphql client.
const apolloClient = new ApolloClient({
networkInterface: createNetworkInterface({
uri: `${process.env.GRAPHQL_ENDPOINT}`
}),
queryTransformer: addTypename,
dataIdFromObject: (result) => {
if (result.id && result.__typename) {
console.log(result.id, result.__typename); //can see this on console, seems okey
return result.__typename + result.id;
}
// Make sure to return null if this object doesn't have an ID
return null;
},
});
// home page query
// return an array of objects (Product)
export default graphql(gql`
query ProductsQuery {
products {
id, name
}
}
`)(Home);
//product page query
//return an object (Product)
export default graphql(gql`
query ProductQuery($productId: ID!) {
product(id: $productId) {
id, name, description, image
}
}
`,{
options: props => ({ variables: { productId: props.params.id } }),
props: ({ data: { loading, product } }) => ({
loading,
product,})
})(Product);
我的控制檯輸出:
要給出答案的第1點的更新:這件事已經可用:http://dev.apollodata.com/react/cache-updates.html#cacheRedirect –
我相信'returnPartialData'不再存在,相反,您必須按照這裏實現兩個查詢,一個摘要和一個完整的查詢:http://dev.apollodata.com/react/migration.html#returnPartialData –