业务场景:
批量新增, 并且回显每一条数据的创立状态;
实现过程
后端新增数据接口每次只能执行一条数据, 对于这种业务接口要反对批量新增业务 我首先想到的解决办法就是在循环中执行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] }); } })(); }) });
如果看到这篇小记得大佬有更优雅的解决办法 无妨在评论中指导一二