javascript - 在提交 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)
})
}
解决方案
不要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)
})
}
}
推荐阅读
- java - 从 KafkaListener 调用休息端点
- java - 找不到 id:2 的书 - @InjectMocks 不起作用 - SpringBoot
- java - 如何比较数组列表中的 int[] 元素?
- php - 数组中多列的唯一实时验证
- forms - 将图像提交到 REST API 时出现 MultipartDataMediaFormatterBoundary 错误
- shell - 使用 sort 命令进行多条件排序
- python - 为什么我不能更改 seaborn clustermap 中的刻度值?
- c# - 在字典 .net 中附加一个值
- matlab - 查找信号和阈值中的转换(使用 Octave)
- flutter - Flutter:淡入非网络图像