uni-app uni.pageScrollTo获取不到元素
uni-app uni.pageScrollTo获取不到元素
操作步骤:
- 第一步:在某个页面中引入组件
- 第二步:在组件中渲染元素并添加点击事件
- 第三步:通过selector属性滚动
预期结果:
- 可以正常滚动
实际结果:
- 无法正常滚动
- Node “xxxx” is not found. PageScrollTo will not trigger.
bug描述:
页面中引入了某一个组件,在该组件中通过selector: “xxx”,选中某个元素滚动,运行到微信小程序后提示以下警告:
- Node “xxxx” is not found. PageScrollTo will not trigger.
更多关于uni-app uni.pageScrollTo获取不到元素的实战教程也可以访问 https://www.itying.com/category-93-b0.html
2 回复
试一下原生微信小程序有没有这个问题
更多关于uni-app uni.pageScrollTo获取不到元素的实战教程也可以访问 https://www.itying.com/category-93-b0.html
这个问题的常见原因是组件内元素的选择器作用域问题。在uni-app中,自定义组件内的元素选择器默认具有隔离性,直接使用组件内元素的ID或class无法在页面级通过uni.pageScrollTo直接定位。
解决方案:
-
使用全局选择器
在组件内为目标元素添加id,并通过selector: '#id'引用。注意确保页面内ID唯一。 -
通过组件通信获取元素位置
在组件内通过this.$parent或Vuex获取页面实例,调用页面的滚动方法:// 组件内 this.$parent.scrollToElement('组件内元素选择器') -
使用节点查询
通过uni.createSelectorQuery().in(this)获取组件内节点信息,再计算滚动位置后调用uni.pageScrollTo:const query = uni.createSelectorQuery().in(this) query.select('#target').boundingClientRect(rect => { uni.pageScrollTo({ scrollTop: rect.top }) }).exec() -
延迟执行
若因渲染时序导致节点未生成,可添加延时:setTimeout(() => { uni.pageScrollTo({ selector: '#target' }) }, 100)

