获取图片高度问题------页面图片加载完成后获取图片高

在React应用中,由于图片加载延迟,使用`componentDidMount`时可能无法正确获取图片高度,导致埋点计算错误。文章讨论了这个问题的原因,即React的DOM加载不等待图片完成加载。提出三种解决方案:1) 预先计算图片在不同设备上的高度并在组件挂载时赋值;2) 使用定时器延迟获取高度,确保图片已加载;3) 使用占位图避免高度计算错误。提醒开发者注意图片加载对高度计算的影响。
摘要由CSDN通过智能技术生成

问题描述:
因为埋点的需要,需要判断一个产品是否进入用户可视区域,在实现过程中出现:
每次新打开一个窗口,使用element.getBoundingClientRect().top去获取一个产品的top值都是错的,但是刷新页面,值又正常了。

思考过程:
为什么会出现这种情况啊,很有可能是因为一个产品卡片中包含了图片导致的。。但是我明明是在componentDidMount中做的处理,该生命周期函数运行的时候不是页面dom都加载完了吗,那不应该获取不到图片高度啊?
是不是react中所谓的dom加载完成就类似于jquery的ready,只是dom的结构加载完毕,便视为加载完成,并不会考虑图片是否加载完成,如果图片没有加载完成,那结果就是获取图片高度为0,程序出错?那怎么解决这个问题?

解决方案:

  1. 人为计算图片在不同设备下的高度,并且在componentDidMount第一行就把这个高度赋给元素。这种方式需要知道图片的展示尺寸(width,height), 然后通过当前设备的宽度按照比例计算出在当前设备的高度,
	window.removeEventListener('resize', this.resizeFunction)
  	//计算在当前设备中图片的高度,PLAY_IMAGE_MARGIN_TOTAL图片margin, IMAGE_SIZE:图片尺寸
    setPlayImageHeight = async() => {
        const viewPortW = document.body.offsetWidth || document.documentElement.offsetWidth
        let p
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值