如何解决排序缓存顺序而不覆盖
如何在不覆盖对象属性的情况下订购 Apollo 缓存?
我正在使用 ReactSortable 构建应用。
DynamoDB 上的每条记录都有“索引”属性,并在从 AppSync 返回时进行排序。
“索引”在 ReactSortable 排序结束时更新。同时,我想更新 Apollo 缓存,以便在不重新加载的情况下更新窗口上的顺序。
这是我尝试过的方法和问题。
- 在变异后使用 writeQuery 并使用 ReactSortable 排序的数组更新缓存。
- 缓存已成功更新,但“索引”未更新。
- 当我多次更改顺序时,排序不起作用。
- 我只想改变缓存数组的顺序并像乐观响应一样更新“索引”
这是我的代码
const [sortedTasks,setSortedTasks] = useState([]);
const [update] = useMutation(gql(updateTask),{
update: (cache) => {
const { tasksByStatus: existingListTasks } = cache.readQuery({
query: gql(tasksByStatus),variables: listTasksVriables
});
cache.writeQuery({
query: gql(tasksByStatus),variables: listTasksVriables,data: {
tasksByStatus: {
...existingListTasks,items: [...sortedTasks]
}
}
});
}
});
const saveOrder = () => {
const updatedindexes = { ... };
updatedindexes.forEach((updatedindex) => {
handleTaskUpdate({ ... });
});
};
<ReactSortable list={tasks} setList={setSortedTasks} onEnd={saveOrder}>
{tasks.map((task) => (
<Task
task={task}
key={task.id}
copy={copy}
showCompleted={showCompleted}
/>
))}
</ReactSortable>
type Task
...
@key(
name: "tasksByStatus"
fields: ["status","index"]
queryField: "tasksByStatus"
) {
id: ID!
...
index: Int
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。