Apollo客户端3本地状态管理

时间:2020-08-23 06:07:52

标签: javascript graphql apollo-client

我决定使用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'值?

0 个答案:

没有答案