【发布时间】:2019-06-30 00:43:08
【问题描述】:
也许我只是没有得到 apollo-link-state 的功能,但我想如果我有一个“默认”值,它会通过 Provider 显示在我的道具中。然而,我找不到它。您如何访问“缓存”或本地状态?
我有:
import { ApolloClient, createNetworkInterface } from 'react-apollo';
import { InMemoryCache } from 'apollo-cache-inmemory';
import { withClientState } from 'apollo-link-state';
import dataIdFromObject from './dataIdFromObject';
const defaults = {
NAME: 'Biff'
};
const resolvers = {};
const cache = new InMemoryCache();
const stateLink = withClientState({ cache, resolvers, defaults });
const apolloClient = new ApolloClient({
cache,
link: stateLink,
networkInterface: createNetworkInterface({
uri: `${config.url}/graphql`,
opts: {
credentials: 'include'
}
}),
addTypename: true,
dataIdFromObject
});
我正在为我的解析器传递一个空对象,因为复制后端中的所有减速器绝对没有意义。我想我会在道具中看到“名字:Biff”。没有。
商店是我的“redux”商店,不是这个问题的一部分。我想用那个“客户端”道具,我会看到我的默认值。没有。
<ApolloProvider store={this.props.store} client={apolloClient}>
当我在子组件中记录我的道具时,任何地方都没有缓存或“名称:Biff”的迹象。我如何在我的子组件中获得这个本地状态。如果我用突变更新它,我应该会看到我的组件重新呈现并可以访问新更新的本地状态......但是......它在哪里?
【问题讨论】:
-
在相关说明中,您可能需要重新访问最新的文档并更新您的 apollo-client 和 react-apollo 版本。
ApolloProvider不再将store作为道具,并且不依赖于 redux 存储。这就是 InMemoryCache 的用途。同样,链接已替换createNetworkInterface。如果您使用的是 2.0 版,您甚至不能导入它 -
很奇怪,因为我有 v2+。我会查一下附加要求。
标签: graphql apollo apollo-link-state