微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

排序缓存顺序而不覆盖

如何解决排序缓存顺序而不覆盖


如何在不覆盖对象属性的情况下订购 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 举报,一经查实,本站将立刻删除。