javascript - 如何在循环中为 React JS 显示自定义确认警报?

标签 javascript reactjs promise async-await

问题:

我正在使用“react-dropzone”上传文件,如果图像名称已经存在,则使用“react-confirm-alert”显示确认警报。 我必须验证图像名称重复并在循环中显示确认,但它只运行一次。

需要:

我必须循环显示确认警报。

问题:

在这个例子中,我使用 async/await 在循环中显示确认。 它在循环中显示,但来自 replaceImageAlert() 的数据未定义。 请建议更好的地方或更好的解决方案 此示例与 window.confirm() 一起工作正常,但我必须使用自定义确认框。

...
async replaceImageAlert(index, fileObject){
  await new Promise(function (resolve, reject) {
    confirmAlert({
      title: 'Confirm to update old image',
      message: 'Are you sure to do this.',
      buttons: [
        {
          label: 'Yes',
          onClick: () => {
            resolve(true);
          }
        },
        {
          label: 'No',
          onClick: () => {
             resolve(false);
          }
        }
      ]
    });
  });
}
...
async function abc(){
  for (var i =0; i < accepted.length; i++){
    var chechAndRemoveDuplicate =  HF.removeDuplicateImage(accepted[i], this.props.files);
    if (chechAndRemoveDuplicate.duplicate){
      var temp = accepted[i];
      var cb = await this.replaceImageAlert(i, temp);
      console.log('cb', cb);
    }else {
      generateFile(i, accepted[i]).then((value)=>{
          this.props.setResourceFile(value.fileObject); //add file data to file aray
      });
    }

  }
}

最佳答案

您的replaceImageAlert 方法只是等待 promise ,但它不会对结果值做任何事情,也不会返回 任何东西。你会想要使用

replaceImageAlert(index, fileObject){
  return new Promise(function (resolve, reject) {
//^^^^^^
    confirmAlert({
      title: 'Confirm to update old image',
      message: 'Are you sure to do this.',
      buttons: [
        {
          label: 'Yes',
          onClick: () => resolve(true)
        },
        {
          label: 'No',
          onClick: () => resolve(false)
        }
      ]
    });
  });
}

因此,当您执行 const x = await replaceImageAlert(...) 时,x 实际上将是 falsetrue.

关于javascript - 如何在循环中为 React JS 显示自定义确认警报?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57056142/

相关文章:

javascript - 如何衡量 React App 随时间推移的首次渲染性能?

javascript - 在一个函数中使用来自多个 promise 的响应

javascript - 如何获取文本区域的类型

javascript - plupload 动态多参数

commonjs - 有没有办法在原生 CommonJS 环境中使用 JSX?

javascript - 为什么我的链式 promise 会阻塞?

node.js - 如何将变量从一个回调获取到另一个回调?

javascript - svg 标签的复杂参数(css 的模拟 calc())

javascript - 按值传递 JavaScript 数组

javascript - Material-ui TextField dom元素如何自定义