我有一些资源,我们称之为todos
。
我有它的列表,用户可以从列表中删除。
在我实施看起来像的 paginaiton 之前
const {data} = useQuery('todos', fetchTodos)
在我删除它的其他地方
const [deleteTodo, deletingMutation] = useMutation(
(id) => deleteTodo(id),
{
onSuccess: (data, deletedTodoId) => {
const { todos } = queryCache.getQueryData<any>('todos');
queryCache.setQueryData('todos', {
todos: todos.filter(todo=>todo.id !== deletedTodoId),
});
},
});
所以在其他地方我只是修改这个数据集叫做'todos'
但是在我实现了 paginaiton 之后,事情变得更加复杂了,因为 QueryKey 现在不仅仅是'todos'
,而是['todos', page]
因此,当我删除待办事项并调用onSuccess
此代码queryCache.getQueryData<any>('todos');
时,它会返回我undefined
- 因为 QueryKey 还包含此页码。
我应该如何解决?使用分页的 QueryKey 修改查询数据。