Graphql proxy.writeQuery异常行为

Graphql proxy.writeQuery异常行为,graphql,apollo-client,Graphql,Apollo Client,我有一个带有graphql客户端连接的todo应用程序(react native) const client = new ApolloClient({ uri: API, cache: new InMemoryCache() }); 当我添加新的todo或delete时,我需要更新缓存,以便在不刷新的情况下显示更改 createTodo({ variables: { text: todo }, update(proxy, result) {

我有一个带有graphql客户端连接的todo应用程序(react native)

const client = new ApolloClient({
  uri: API,
  cache: new InMemoryCache()
});
当我添加新的todo或delete时,我需要更新缓存,以便在不刷新的情况下显示更改

createTodo({
        variables: { text: todo },
        update(proxy, result) {
          const data = proxy.readQuery({
            query: FETCH_TODOS
          });
          data.getTodos = [result.data.createTodo, ...data.getTodos];
          proxy.writeQuery({
            query: FETCH_TODOS,
            data
          });
        }
      });
    } 
问题是,我必须在项的组件中调用writeQuery。如果我在表单组件中调用它。什么也没发生。为什么?

更新 这段代码工作得很好,但是createTodo没有

const hanglePress = key => {
    deleteTodo({
      variables: { todoId: key },
      update(proxy) {
        const data = proxy.readQuery({
          query: FETCH_TODOS
        });
        data.getTodos = data.getTodos.filter(todo => todo.id !== key);
        proxy.writeQuery({ query: FETCH_TODOS, data });
      }
    });
  };

“显示但不刷新”-刷新(重新显示某个组件)用于显示更改如果您使用的代码完全相同,并且它在一个组件中工作,而不是在另一个组件中工作,则仅从您发布的内容不清楚会出什么问题。您应该更新您的问题,以显示正在运行的代码和未运行的代码。@DanielRearden实际上,这两个组件中的代码是相同的。唯一的区别是“createTodo”,另一个是“deleteTodo”。当我使用update方法在项的组件中调用deleteTodo时,它可以正常工作。但在表单组件中,它不是。我通过将状态提升到项目的组件来解决它,它在那里工作。但是我不明白为什么它在那里不起作用。就像我说的,如果组件在一个组件中工作,而不是在另一个组件中工作,那么我们需要看看它在两个组件中是如何使用的,以确定原因是什么