首页 > 解决方案 > 在提交 redux 表单循环 axios 帖子以获取多个值

问题描述

在此处输入代码有我希望在 redux 表单提交上将每个值发布到 axios api 的复选框表单列表,在以下代码中显示提交功能,

values={example1:true,example2:true,example3:false,example4:true} 我的代码中的预期输出以打印每个键然后发布它但是现在它这样做会循环和控制台(example1,.... ,example4) 在此之后将为一个相同的键调用帖子 4 次

submit(values) {
let data={
    "status":"INVITED",
    "buyerId": localStorage.getItem("companyId"),
    "joinType": "B",
    "supplierId": ""          
}
for (var key in values) {
    if (values[key]) {

        data.supplierId=key
       console.log(key)
       postWithAuth("networkmgtservice/api/networks",data).then((response) => {
        let status=response.data.statusCode;
        if(status="000"){
              console.log(key)
            $(`#${keyVar}`).html("Successfully sent")
        }
        else if(status=="999"){

            $(`#${keyVar}`).html(response.data.errorDescription)
        }
      })
        .catch((error) => {
            console.log(error)
        })
    }

标签: javascriptreactjsfor-loopreact-redux

解决方案


不要var在循环内声明循环变量,因为您正在执行异步任务,因为声明的变量var不维护它们的状态并更新为循环中的最后一个值,因为循环总是比 API 调用快,所以您的循环变量只会保留地图中最后一项的值。而是let在它们维护状态时使用声明循环变量。

submit(values) {
let data={
    "status":"INVITED",
    "buyerId": localStorage.getItem("companyId"),
    "joinType": "B",
    "supplierId": ""          
}
for (let key in values) {
    if (values[key]) {
       let requestData = {...data};
       requestData.supplierId=key
       console.log(key)
       postWithAuth("networkmgtservice/api/networks",requestData)
           .then((response) => {
                let status=response.data.statusCode;
                if(status="000"){
                    console.log(key)
                    $(`#${keyVar}`).html("Successfully sent")
                }
                else if(status=="999"){
                    $(`#${keyVar}`).html(response.data.errorDescription)
                }
           })
            .catch((error) => {
                 console.log(error)
             })
     }
}

推荐阅读