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

网站标签span免费com域名注册永久

网站标签span,免费com域名注册永久,手机网页游戏平台,企业网站开发效果情景描述 我们有一个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://www.yayakq.cn/news/539439/

相关文章:

  • 大数据时代的智能营销北京优化网站外包公司
  • 塔城网站seo开发网站用什么软件
  • 网站建设新报价图片wordpress外贸主
  • 企业微信网站建设网站后台维护月薪多少
  • 如何创建一个免费网站微小店网站建设价格
  • win7iis部署asp.net网站互联网网站模板
  • 青岛seo网站排名电话号码查询企业
  • 人力社保网站建设的意义企业宣传册设计与制作
  • ps酒店网站模板中国建设招标网官方网站
  • 服装网站建设公司一流专业建设标准
  • 宁波做seo推广企业郑州网站建设专注乐云seo
  • app制作网站收费吗网站宣传营销
  • 旅游网站课程设计江西省建设厅业绩网站
  • 施工企业综合管理费福州seo计费
  • 公司名称大全四字沈阳seo收费
  • 中国空间站完成图方象科技的服务范围
  • 公司备案查询网站备案网站建设程序
  • 上海市住宅建设发展中心网站大型网络规划与设计
  • wordpress建站很麻烦附近免费手工活拿回家
  • 网站的维护和更新婚纱类网站素材
  • 做个自己的网站需要多少钱北京天通苑网站建设
  • wordpress建立网站实例网站制作软件是什么
  • 做淘客网站需要多大空间wordpress git
  • 泉州市服务好的网站设计突泉建设局三务公开网站
  • 哪个网站用织梦做的有关中国文明网联盟网站建设活动方案
  • 南昌网站建设如何公众平台有哪些
  • 帮忙找人做网站删除wordpress
  • 临沂网站建设哪家更好软件开发主要是干什么的
  • 福州城乡建设发展总公司官方网站wordpress的cms插件
  • 用ps做网站尺寸站长统计网站统计