首页 > 解决方案 > React - 使用 axios 更新列表并同时刷新

问题描述

我有一个saveDocument基本上做两件事的功能;发送更新我的文档的请求并发送另一个请求以获取包括更新记录的新数据。问题是loadDocuments返回旧数据集,而不是更新。似乎它没有等待更新,即使使用 async/await。

保存文档

async function saveDocument() {
    await updateDocument(selectedDocument);
    const response = await loadDocuments(selectedGroup.id);
    console.log(response);
    setDocuments(response);
}

更新文档

export const updateDocument = async (groupData) => {
  await api.put(`/documents/${groupData.id}`, groupData);
};

加载文档

export const loadDocuments = async (groupId) => {
  const { data } = await api.get('/documents', { params: { groupId } });
  return data;
};

如果我用 setTimeout 包装该函数loadDocuments,它可以完美运行,因为有时间更新然后获得最新结果。但它也应该与 async/await 一起使用。我究竟做错了什么?例子:

async function saveDocument() {
    await updateDocument(selectedDocument);

    setTimeout(async () => {
      const response = await loadDocuments(selectedGroup.id);
      console.log(response);
      setDocuments(response);
    }, 2000)
  }

标签: javascriptreactjsaxios

解决方案


推荐阅读