共计 525 个字符,预计需要花费 2 分钟才能阅读完成。
业务场景:
批量新增, 并且回显每一条数据的创立状态;
实现过程
后端新增数据接口每次只能执行一条数据, 对于这种业务接口要反对批量新增业务 我首先想到的解决办法就是在循环中执行 async 函数, 其次在 async 函数外部获取 state 的值 并 set;
问题与解决
loopKeyword.map((keyword: string) => { | |
loopCPM.map((cpm: string) => { | |
// 同步申请; | |
(async () => { | |
const res = await addData({ | |
...param, | |
adSlotName, | |
keyword, | |
cpm | |
}); | |
if (res && res.records) { | |
/* | |
之前做法 间接读取现实状况下的 state 值构造赋值进去新值, 调试发现读取的值始终是某个状态下固定的值, 并不是实时更新的; | |
setCraeteStatus([...craeteStatus,res.records]); | |
*/ | |
// 改过为 应用更新程序性能利用先前的 (上一个) 状态 | |
setCraeteStatus((prevState: any) => {return [...prevState, res.records] | |
}); | |
} | |
})();}) | |
}); |
如果看到这篇小记得大佬有更优雅的解决办法 无妨在评论中指导一二
正文完
发表至: typescript
2021-10-19