uni.createSelectorQuery渲染后执行

当在uni-app中使用createSelectorQuery时,由于与数据赋值同步调用,导致只能获取到旧的渲染数据。为解决此问题,可以等待页面渲染完成后再调用。目前采用setTimeout作为临时替代方案,但官方建议在生命周期钩子如onReady之后调用。对于自定义组件编译模式,需结合this.$nextTick使用,以确保在DOM更新后执行selectorQuery。
摘要由CSDN通过智能技术生成

每次使用createSelectorQuery时,因为和数据赋值一起调用,所以导致只能获取到上一次渲染的数据,

如果能让这个函数 在渲染之后调用,就可以完美解决了

暂时不知道怎么监听页面是否渲染。

所以只能使用 setTimeout临时代替一下

	scrollToBottom: function () {
					let query = uni.createSelectorQuery();
					query.in(this).selectAll('.main-item').boundingClientRect();
					query.in(this).select('#scrollview').boundingClientRect();
					query.exec((res) => {
							let mitemHeight = 0;
							console.log("元素",res);
							res[0].forEach((rect) => mitemHeight = mitemHeight + rect.height + 40)  
							if (mitemHeight > that.solHeight) {  
									that.scrollTop = (mitemHeight + 100)
							}
	    })
			}

注意一下 

官方文档

  • 使用 uni.createSelectorQuery() 需要在生命周期 mounted 后进行调用。
  • 自定义组件编译模
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值