uni-app uniappx uvue页面调用uni.pageScrollTo报错 如果不进行手动滚动一下页面 则一直报错
uni-app uniappx uvue页面调用uni.pageScrollTo报错 如果不进行手动滚动一下页面 则一直报错
操作步骤:
```bash
<template>
<!-- #ifdef APP -->
<scroll-view style="flex:1">
<!-- #endif -->
<view @click="onTop">
<text v-for="(n,i) in list" :class="['txt_'+i]">
{{n}}
</text>
</view>
<!-- #ifdef APP -->
</scroll-view>
<!-- #endif -->
</template>
<script>
export default {
data() {
return {
list:[] as string[]
}
},
created() {
for(let i=0;i<50;i++) {
this.list.push(i+':可以滚动到指定的scrollTop值处,也可以滚动到指定的目标元素处')
}
},
methods: {
onTop(){
uni.pageScrollTo({
selector:'.txt_30'
})
},
}
}
</script>
```
### 预期结果:
```
可以不需要手动滚动一下
```
### 实际结果:
```
必须要手动滚动一下页面,才能正确运行uni.pageScrollTo
```
### bug描述:
uniappx uvue页面调用uni.pageScrollTo报错,如果不进行手动滚动一下页面,则一直报错,多点击几次会出现大段错误
```
02:46:37.642 error: java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Number
02:46:37.642 at pages/demo/demo.uvue:30:4
...
```
更多关于uni-app uniappx uvue页面调用uni.pageScrollTo报错 如果不进行手动滚动一下页面 则一直报错的实战教程也可以访问 https://www.itying.com/category-93-b0.html
1 回复
更多关于uni-app uniappx uvue页面调用uni.pageScrollTo报错 如果不进行手动滚动一下页面 则一直报错的实战教程也可以访问 https://www.itying.com/category-93-b0.html
这是一个典型的页面渲染时机问题。在uni-app x的uvue页面中,uni.pageScrollTo需要在页面完全渲染完成后才能正常调用。
当页面初次加载时,虽然DOM已经创建,但滚动容器可能还未完全初始化。手动滚动后触发了容器的重新计算,此时pageScrollTo才能正确定位目标元素。
解决方案:
- 使用
$nextTick延迟执行:
onTop(){
this.$nextTick(() => {
uni.pageScrollTo({
selector:'.txt_30'
})
})
}
- 添加setTimeout确保渲染完成:
onTop(){
setTimeout(() => {
uni.pageScrollTo({
selector:'.txt_30'
})
}, 50)
}

