react hooks useEffect 取消 promise

cancel promise

https://github.com/facebook/react/issues/15006#issuecomment-543059930

https://react.docschina.org/docs/hooks-effect.html#需要清除的-effect

https://overreacted.io/zh-hans/a-complete-guide-to-useeffect/

清除的 effect & 取消订阅 & 取消 promise

bug

OK


const { adcode, regions = [] } = regionData;
const [regionName, setRegionName] = useState('全国');
const [tableData, setTableData] = useState(regions);
useEffect(() => {
let isSubscribed = true;
// getRegionName(adcode).then(setRegionName);
getRegionName(adcode).then(() => {
if(isSubscribed) {
return setRegionName;
}}
);
// 添加name字段
const promises = [];
regions.forEach(item => {
promises.push(
getRegionName(item.code)
.then(name => {item.name = name;})
// eslint-disable-next-line no-console
.catch(() => console.log('获取%s地名失败', item.code)),
);
});
// 后端传来部分区划代码是错误的,找不到对应地名,暂时先剔除
Promise
.all(promises)
.then(() => {
if(isSubscribed) {
return setTableData(regions.filter(({ name }) => !!name));
}
});
return () => isSubscribed = false;
}, [adcode, regionData, regions]);

https://juliangaramendy.dev/use-promise-subscription/

https://segmentfault.com/a/1190000018652589#articleHeader7

refs



xgqfrms 2012-2020

www.cnblogs.com 发布文章使用:只允许注册用户才可以访问!


最新文章

  1. 学习Redis你必须了解的数据结构——HashMap实现
  2. FacadePattern(门面模式)
  3. fir.im Weekly - iOS 保持界面流畅的技巧
  4. Jquery+Ajax下拉框级联查询
  5. BZOJ 1014: [JSOI2008]火星人prefix
  6. 用c语言写的简单计算器
  7. TeamCity配置笔记
  8. Struts2 标签分类
  9. openjudge-回文串判断【递归】
  10. java.math.BigDecimal类
  11. arduino电子琴(2015-11-04)
  12. Web项目生成详解
  13. Django缓存和内置信号
  14. LVM备份(1)-创建LVM逻辑卷
  15. Django之Form验证
  16. canvas学习之柱状图
  17. osg内置shader变量
  18. FabricExpress.net supply high quality quilting fabric
  19. 2017-2018-2 20165330 实验四《Android程序设计》实验报告
  20. HDU 4370 - 0 or 1 (SPFA+思维)

热门文章

  1. vscode 远程开发安装
  2. 从零开始学Java (一)环境配置
  3. bzoj 2038(莫队算法)
  4. html输入框输入显示剩余字数
  5. liux 常用操作命令
  6. (9)Linux的哲学思想及文件概念
  7. Vue-Cli程序环境搭建
  8. Pytest(6)重复运行用例pytest-repeat
  9. Java初体验
  10. CF-1451 E Bitwise Queries 异或 交互题