我需要将我的 Apollo 客户端缓存设置为默认值
I need to set my Apollo Client Cache to its defaults
我有一个使用 Apollo Client 的 React 应用程序。我正在使用 apollo-link-state
和 apollo-cache-persist
,并且在我的应用中调用 client.resetStore()
时需要将我的商店重置为默认值。
文档说在创建客户端时你应该调用 client.onResetStore(stateLink.writeDefaults)
这将完成工作但是 writeDefaults
被阿波罗公开 Link 我没有直接的状态在我使用 Apollo Boost 时访问。
这是我的 Apollo 客户端代码:
import ApolloClient from 'apollo-boost';
import { InMemoryCache } from 'apollo-cache-inmemory';
import { persistCache } from 'apollo-cache-persist';
import { defaults, resolvers } from "./store";
const cache = new InMemoryCache();
persistCache({
storage: window.localStorage,
debug: process.env.NODE_ENV !== 'production',
cache
});
const client = new ApolloClient({
uri: process.env.NODE_ENV === 'production' ? 'https://five-yards-api.herokuapp.com/graphql' : 'http://localhost:7777/graphql',
credentials: 'include',
clientState: {
defaults,
resolvers
},
cache
});
// TODO: Doesn't work as expected
client.onResetStore(client.writeDefaults);
export default client;
据我所知,唯一的方法是从 Apollo Boost 迁移,它在后台为您配置了很多东西,并手动设置 Apollo Client。迁移后,我可以根据文档调用 onResetStore()
,一切正常 :)
Apollo Boost 迁移:
https://www.apollographql.com/docs/react/advanced/boost-migration.html
我用的是Apollo Client2.x,Apollo Boost可能也是一样的。
我在使用 Apollo Client 2.x 时遇到了同样的问题,下面是适合我的解决方案。
在配置 Apollo 的根文件中(例如 App.js):
cache.writeData({data : defaultData }); # I assume you already have this to initialise your default data.
# Then, you just add below underneath.
client.onResetStore(() => {
cache.writeData({data : defaultData });
});
const App = () => (...
我有一个使用 Apollo Client 的 React 应用程序。我正在使用 apollo-link-state
和 apollo-cache-persist
,并且在我的应用中调用 client.resetStore()
时需要将我的商店重置为默认值。
文档说在创建客户端时你应该调用 client.onResetStore(stateLink.writeDefaults)
这将完成工作但是 writeDefaults
被阿波罗公开 Link 我没有直接的状态在我使用 Apollo Boost 时访问。
这是我的 Apollo 客户端代码:
import ApolloClient from 'apollo-boost';
import { InMemoryCache } from 'apollo-cache-inmemory';
import { persistCache } from 'apollo-cache-persist';
import { defaults, resolvers } from "./store";
const cache = new InMemoryCache();
persistCache({
storage: window.localStorage,
debug: process.env.NODE_ENV !== 'production',
cache
});
const client = new ApolloClient({
uri: process.env.NODE_ENV === 'production' ? 'https://five-yards-api.herokuapp.com/graphql' : 'http://localhost:7777/graphql',
credentials: 'include',
clientState: {
defaults,
resolvers
},
cache
});
// TODO: Doesn't work as expected
client.onResetStore(client.writeDefaults);
export default client;
据我所知,唯一的方法是从 Apollo Boost 迁移,它在后台为您配置了很多东西,并手动设置 Apollo Client。迁移后,我可以根据文档调用 onResetStore()
,一切正常 :)
Apollo Boost 迁移: https://www.apollographql.com/docs/react/advanced/boost-migration.html
我用的是Apollo Client2.x,Apollo Boost可能也是一样的。 我在使用 Apollo Client 2.x 时遇到了同样的问题,下面是适合我的解决方案。 在配置 Apollo 的根文件中(例如 App.js):
cache.writeData({data : defaultData }); # I assume you already have this to initialise your default data.
# Then, you just add below underneath.
client.onResetStore(() => {
cache.writeData({data : defaultData });
});
const App = () => (...