簡體   English   中英

異步函數具有舊狀態 React-Redux

[英]async function has old state React-Redux

我正在開發一個 React 項目,用戶可以在其中上傳和刪除項目中的照片。 上傳新圖像后,只有選擇了相應的項目,用戶才能看到它。 解決方案很容易檢查

if 
(selectedProject.projectID=== imageMetadata.projectID)

在哪里

  • selectedProject.projectID:當前選中項目的Id(來自Redux Store)
  • imageMetadata.projectID:上傳圖片所屬的項目ID。

所有這些都是在一個異步函數中完成的,我們面臨的問題是,即使在其他地方更改了selectedAlbum.albumID之后,該函數仍然具有其舊值。 是因為函數是異步的嗎?

這是我的代碼:

 let projectId = selectedProject.projectID;
 const responses = await Promise.all(
   filesToUpload.map( async (file) => {
     let res = await imageStoreApiHandler.uploadPhoto(file, projectId);
     notifyUploadProgress(count++, total, notifcationKey);
     if (res.status === 200) {
       let imageMetadata: any = res.data[0];
       if (selectedProject.projectID === imageMetadata.projectID) {
         addImage(imageMetadata);
       }
     }
     return res;
   }));

這可能是一個閉包問題,uploadhandler 一直緩存第一個函數。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Closures

也許編寫一個函數,該函數將根據當前項目 ID 的參數返回一個承諾所有數組。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM