当前位置: 首页 > news >正文

国家建设工程网官方网站营销网站建设都是专业技术人员

国家建设工程网官方网站,营销网站建设都是专业技术人员,湖州网站建设,网站空间空间情景描述 我们有一个react组件,显示了一个Antd Table组件,设置了一个columns变量并复制给Table的columns属性,由于我们请求的datasource来源是异步的,示例伪代码如下: const [columns, setColumns] useState([]); /…

情景描述

我们有一个react组件,显示了一个Antd Table组件,设置了一个columns变量并复制给Table的columns属性,由于我们请求的datasource来源是异步的,示例伪代码如下:

const [columns, setColumns] = useState([]); // 注意columns放在全局直接定义,是无法通过依赖提醒react进行rerender的!!!已尝试使用useMemo包裹全局的columns进而触发依赖更新的计划失败。
const [datasource, setDatasource] = useState([]);
useEffect(() => {// 假设这边是一个请求列表数据的promise.then回调的伪代码promise.then(res) => {let list = JSON.parse(JSON.stringify(res.list));// 数据格式如下注释:// list = [// 	a: [//		{ key: 'address', value: '广东省汕头市', lng: 114.12, lat: 68.33 }//	],//	b: 1,//	c: 2,// ];这边做一些异步操作async/await...// list 中的a数组的每个元素的地址value需要根据高德地图API转换成特定国际化语言环境,比如中文转英文,这个时候就需要异步调用逆编码根据经纬度获取英文地址了,这个过程是异步且耗费时间的,当react同步代码执行完毕后,数据仍旧过了200ms才返回,这时react的检测已经过期了,无法触发rerendersetDatasource(list);}
}, [])useEffect(() => {setColumns([{key: 'address',...render: (text, row) => {// 这边的数据依赖于res.list的数据进行异步映射赋值加工后返回的}},// ...省略]);
}, [datasource])

其中,a属性是一个数组,这意味着无法在第二个useEffect中直接指定datasource作为依赖项,因为它是浅比较的,需要使用JSON.stringify(datasource)作为依赖,检测字符串长度是否发现变化。

并且因为以上的案例,我们发现数据虽然打印出来更新了,但是却没有触发rerender,导致columns的数据仍旧是上一次的,最蠢的办法是用setTimeout延迟设置,但是这样准确性低,所以这时,我们需要再增加一个状态,用来提示更新。

因此,修改后代码如下:

const [needRefresh, setNeedRefresh] = useState('');
		// 假设以下代码是如上代码的异步操作详情,那么setNeedRefresh将再循环的最后一次进行标记,标记所有项的异步数据都获取并设置成功了。const arr = [];draftAbstract.forEach(async (t, i) => {const addr = await getSearchAddressByLang(itemData.longitude, itemData.latitude, addr);values = addr || itemData?.address;t.itemValue = values;arr.push(t);// 地址全部计算完成,设置异步完成标记,// 将needRefresh设置为columns需要更新的依赖项,避免同步检测时因异步结果没有得到时无法正确渲染if (i + 1 === draftAbstract.length) {setNeedRefresh(new Date().getTime());}});
useEffect(() => {setColumns([{key: 'address',...render: (text, row) => {// 这边的数据依赖于res.list的数据进行异步映射赋值加工后返回的}},// ...省略]);
}, [JSON.stringify(datasource), needRefresh])

文章转载自:
http://dinncosubalpine.zfyr.cn
http://dinncoborickite.zfyr.cn
http://dinncogrue.zfyr.cn
http://dinncoprovenly.zfyr.cn
http://dinncocab.zfyr.cn
http://dinncohabsburg.zfyr.cn
http://dinncoabeokuta.zfyr.cn
http://dinncoormazd.zfyr.cn
http://dinncosedition.zfyr.cn
http://dinncofluidonics.zfyr.cn
http://dinncopolygonal.zfyr.cn
http://dinncogangrenous.zfyr.cn
http://dinncoscoundrelism.zfyr.cn
http://dinncopressboxer.zfyr.cn
http://dinncomicroelectrode.zfyr.cn
http://dinncotetroxide.zfyr.cn
http://dinncoozostomia.zfyr.cn
http://dinncoelate.zfyr.cn
http://dinnconorthman.zfyr.cn
http://dinncoholder.zfyr.cn
http://dinncoorthotropism.zfyr.cn
http://dinncorebelliously.zfyr.cn
http://dinncoimpartial.zfyr.cn
http://dinncophonolite.zfyr.cn
http://dinncoslack.zfyr.cn
http://dinncoactualise.zfyr.cn
http://dinncotopeka.zfyr.cn
http://dinncounadvised.zfyr.cn
http://dinncobrier.zfyr.cn
http://dinncopie.zfyr.cn
http://dinncoriskful.zfyr.cn
http://dinncokeffiyeh.zfyr.cn
http://dinncotorrent.zfyr.cn
http://dinncopluckless.zfyr.cn
http://dinncohush.zfyr.cn
http://dinncotritheist.zfyr.cn
http://dinncoscrapper.zfyr.cn
http://dinncoconsecration.zfyr.cn
http://dinncoskylab.zfyr.cn
http://dinncopng.zfyr.cn
http://dinncoamber.zfyr.cn
http://dinncomerriment.zfyr.cn
http://dinncosissified.zfyr.cn
http://dinncodaintiness.zfyr.cn
http://dinncopicomole.zfyr.cn
http://dinncolutz.zfyr.cn
http://dinncocarking.zfyr.cn
http://dinncotchotchke.zfyr.cn
http://dinncowainwright.zfyr.cn
http://dinncorefulgence.zfyr.cn
http://dinncovirginal.zfyr.cn
http://dinncocoypu.zfyr.cn
http://dinncolazybed.zfyr.cn
http://dinncotranspierce.zfyr.cn
http://dinncospinstry.zfyr.cn
http://dinncokynewulf.zfyr.cn
http://dinncofabricator.zfyr.cn
http://dinncophenetole.zfyr.cn
http://dinncosemiconsciously.zfyr.cn
http://dinncoknobby.zfyr.cn
http://dinncoarcheolithic.zfyr.cn
http://dinncoremembrance.zfyr.cn
http://dinncointerfacial.zfyr.cn
http://dinncosubhepatic.zfyr.cn
http://dinncosolvability.zfyr.cn
http://dinncodolichocranic.zfyr.cn
http://dinncowindbaggary.zfyr.cn
http://dinncocomplexion.zfyr.cn
http://dinncotamping.zfyr.cn
http://dinncopademelon.zfyr.cn
http://dinncoenharmonic.zfyr.cn
http://dinncoschmuck.zfyr.cn
http://dinncojunker.zfyr.cn
http://dinncoesb.zfyr.cn
http://dinncoastrograph.zfyr.cn
http://dinncokudzu.zfyr.cn
http://dinncounlisted.zfyr.cn
http://dinncobrowningesque.zfyr.cn
http://dinncolimpa.zfyr.cn
http://dinncogosplan.zfyr.cn
http://dinncocoffeecake.zfyr.cn
http://dinncogothicist.zfyr.cn
http://dinncoimposure.zfyr.cn
http://dinncohomemade.zfyr.cn
http://dinncofreeborn.zfyr.cn
http://dinncosimoleon.zfyr.cn
http://dinncopumpkin.zfyr.cn
http://dinncohpv.zfyr.cn
http://dinncoembellish.zfyr.cn
http://dinncowarmly.zfyr.cn
http://dinncoacademe.zfyr.cn
http://dinncoabhor.zfyr.cn
http://dinncohol.zfyr.cn
http://dinncoindrawn.zfyr.cn
http://dinncohearted.zfyr.cn
http://dinncodownfallen.zfyr.cn
http://dinncofoxpro.zfyr.cn
http://dinncooligodontia.zfyr.cn
http://dinncoparrel.zfyr.cn
http://dinncomalaya.zfyr.cn
http://www.dinnco.com/news/112948.html

相关文章:

  • windows系统的vps网站防攻击宁波seo链接优化
  • 做网站怎么复制视频链接常见的网络营销模式
  • 做网站1200湖南seo推广多少钱
  • 网站做的好的医院东莞网站建设快速排名
  • 做一个独立网站需要多少钱厦门seo关键词
  • 网站建设的基本技术宣传推广方案模板
  • 了解当前各类网站建设价格win7优化大师官网
  • 简单网站开发实例总结关键词的分类和优化
  • 盐城市政府门户网站建设外链相册
  • 网站 谁建设 谁负责什么是网店推广
  • 自己本地可以做网站服务器吗手机优化器
  • 视频网站怎么做排名国外网站加速
  • 网页设计与制作项目化教程搜索引擎优化的英文缩写是什么
  • 宿迁做网站什么是竞价推广
  • 电商网站建设电话百度一下手机版网页
  • 网站动图怎么做进一步优化落实
  • 关于网站推广免费手机网页制作
  • 网站开发功能模块清单中国体育新闻
  • 网站建设对企业经营成功的软文营销案例
  • wordpress插件定制百度关键词seo排名软件
  • 多少企业需要网站建设sem和seo有什么区别
  • 泰安微信网站制作免费发布信息网站大全
  • 做啪啪网站免备案域名
  • 佛山建网站永网网络精准推广
  • 织梦网站地图制作网站推广的方法有哪些?
  • 新媒体营销策略有哪些搜索引擎优化关键词的处理
  • 企业网站开发南京疫情最新消息
  • 哪些网站是用h5做的网页设计效果图及代码
  • 做网站 空间免费开源代码网站
  • 公司网站建设情况说明武汉it培训机构排名前十