6***@qq.com
6***@qq.com
  • 发布:2024-02-01 16:54
  • 更新:2024-02-02 16:18
  • 阅读:549

在onReady里面使用uni.createSelectorQuery(),获取不到数据

分类:uni-app

onReady() {
setTimeout(() => {
uni.createSelectorQuery().in(this).selectAll('.title').boundingClientRect(data => {
data.forEach(item => {
console.log(item)
})
}).exec()
}, 1500)
},
如上,微信开发工具中,在onReady中获取 接口返回的list中的title,如果不加setTimeout,就不会打印,加setTimeout需要设置1.5s以上,才能打印正确的数据,怎么解?1.5s太长了,

2024-02-01 16:54 负责人:无 分享
已邀请:
blackhole7878

blackhole7878

应该等你接口数据返回成功后再调用createSelectorQuery吧,你在onReady里调用,数据都没渲染。你加的延时是接口请求加数据渲染的时间。

  • 6***@qq.com (作者)

    在接口返回时调用createSelectorQuery,打印不出来东西

    2024-02-01 17:23

  • blackhole7878

    回复 6***@qq.com: 用$nextTick啊

    2024-02-01 17:38

6***@qq.com

6***@qq.com (作者)

目前在接口返回后,加了$nextTick,里面再套了一层setTimeout,勉强可以用,希望各位大神能提供更多更好的思路

this.$nextTick(() => {
setTimeout(() => {
xxxxxxxxxxxx
}, 1)
})

blackhole7878

blackhole7878

不需要什么延时

  • 6***@qq.com (作者)

    如果不加定时器,获取到的数据不准确,加了定时器就是另外一个数据了,才能够准确的定位

    2024-02-02 16:10

6***@qq.com

6***@qq.com (作者)

图1是接口请求的代码,图2是加了1毫秒的定时器返回的数据,是正确的,能正确定位滚动的数据,图3是不加定时器返回的结果,有结果的,但是不准确,和onReady里写在nextTick里面返回的数据一样,图3一万多的数据不对,不清楚是什么原理

  • JXWang

    从代码中看,没看出来接口请求完之后对dom渲染产生了什么影响,可能是get_good_list方法里有,可以发一下get_good_list的方法里的代码吗

    2024-02-02 17:19

要回复问题请先登录注册