要向Apollo-client的缓存中的数组添加项目,可以使用Apollo Client的writeQuery方法。以下是一个示例代码:
import { ApolloClient, InMemoryCache } from '@apollo/client';
const client = new ApolloClient({
cache: new InMemoryCache(),
// ...其他配置项
});
// 假设我们有一个名为todos的缓存数组,并且初始值为空数组
const initialData = {
todos: [],
};
// 添加项目到缓存数组的函数
const addTodo = (todo) => {
const existingData = client.readQuery({ query: GET_TODOS_QUERY }); // 读取缓存数据
const newTodos = [...existingData.todos, todo]; // 将新项目添加到缓存数组中
client.writeQuery({
query: GET_TODOS_QUERY,
data: { todos: newTodos }, // 将更新后的数组写回缓存
});
};
// 调用addTodo函数来添加新项目
addTodo({ id: 1, title: 'Finish homework' });
在上面的示例中,我们首先使用Apollo Client的readQuery
方法读取缓存数据,并获取到缓存数组的当前值。然后,我们通过将新项目添加到已存在的数组中,创建一个新的数组newTodos
。最后,我们使用Apollo Client的writeQuery
方法将更新后的数组写回缓存中。
请注意,上述示例中的GET_TODOS_QUERY
是一个代表获取todos的GraphQL查询。你需要将其替换为你自己的查询。