要保存Apollo Client反应性变量状态,可以使用apollo-link-state
插件。该插件允许您声明本地数据并与Apollo Client缓存集成。以下是示例代码:
首先,安装apollo-link-state
:
npm install -S apollo-link-state
然后在Apollo Client配置中添加以下内容:
import { withClientState } from 'apollo-link-state';
import { ApolloLink } from 'apollo-link';
import { InMemoryCache } from 'apollo-cache-inmemory';
const cache = new InMemoryCache();
const stateLink = withClientState({
// 初始本地状态
defaults: {
reactiveVarState: {
value: false,
__typename: 'ReactiveVarState',
},
},
// 更新器函数可以更新状态值
resolvers: {
Mutation: {
setReactiveVarState: (_, { value }, { cache }) => {
const data = {
reactiveVarState: {
__typename: 'ReactiveVarState',
value,
},
};
cache.writeData({ data });
return null;
},
},
},
cache,
});
const link = ApolloLink.from([stateLink, httpLink]);
const apolloClient = new ApolloClient({
link,
cache,
});
在此示例中,我们将初始本地状态设置为reactiveVarState
,并在resolvers
中添加setReactiveVarState
函数。此函数接受要设置的状态值并将其写入Apollo Client缓存。现在,如果您使用setReactiveVarState
更改状态值,则该值将保留在缓存中,即使刷新页面也是如此。
要使用reactiveVarState
状态值,请编写GraphQL查询。例如:
query getReactiveVarStateValue {
reactiveVarState @client {
value
}
}
通过在查询中使用@client
,我们告诉Apollo Client将其发送到本地而不是远程GraphQL服务器。现在,我们