我决定使用apollo客户端3.0。我想在apollo客户端缓存中管理本地状态。
我在服务器端编写了架构和解析器。
const typeDefs = gql`
type Movie {
id: Int!
medium_cover_image: String!
}
type Query {
movies(limit: Int, minimum_rating: Float): [Movie]!
`;
const resolvers = {
Query: {
movies: (_, {limit, minimum_rating}) => getMoveis(limit, minimum_rating)
}
我使用apollo的Field策略在客户端添加了本地状态。
const cache = new InMemoryCache({
typePolicies: {
Movie:{
fields: {
isLiked: {
read(){
return isLikedVar();
}
}
}
}
}
})
export const isLikedVar = makeVar(false);
const client = new ApolloClient({
uri: 'http://localhost:4000/graphql',
cache
});
export default client;
因为我想用服务器端字段填充“ isLiked”。像这样
const GET_MOVIES = gql `
query {
movies {
id
medium_cover_image
isLiked @client
}
}
`;
而且我无法使用反应性变量'isLikedVar'更改'Movie'类型的单个文件。 当我命令'isLikedVar(true)'时,所有值都会更改。 如何使用其ID更改单个'isLiked'值?