Graphql proxy.writeQuery异常行为
我有一个带有graphql客户端连接的todo应用程序(react native)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) {
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时,它可以正常工作。但在表单组件中,它不是。我通过将状态提升到项目的组件来解决它,它在那里工作。但是我不明白为什么它在那里不起作用。就像我说的,如果组件在一个组件中工作,而不是在另一个组件中工作,那么我们需要看看它在两个组件中是如何使用的,以确定原因是什么