没有把数组值全部替换,是不断将数据追加push进数组。
基础库版本:2.10.3
const updateList = `tabs[${activeTab}].list[${page}]`
const updatePage = `tabs[${activeTab}].page`
this.setData({
[updateList]: res,
[updatePage]: page + 1
})
<!-- 这是自定义组件的内部WXML结构 -->
<scroll-view class="tab-content" enable-back-to-top="{{true}}" scroll-y="{{true}}" scroll-anchoring="{{true}}" lower-threshold="100" bindscrolltolower="updateGameList">
<view class="game-card-wrap" wx:for="{{gameListWrap}}" wx:for-item="gameList" wx:for-index="gameListIdx" wx:key="gameListIdx">
<view class="game-card" hover-class="hover-class" hover-start-time="100" wx:for="{{gameList}}" wx:for-item="game" wx:for-index="gameIdx" wx:key="gid">
</view>
</view>
</scroll-view>
使用uniapp的时候遇到过类似问题,也是加载更多时会自动跳转到列表顶部。
我遇到的问题产生原因是srcoll-view标签有v-if,每次加载数据成功时v-if的false和true的切换会导致srcoll-view重新渲染,滚动条就会回到顶部。
试试去掉v-if的判断看会不会重现
好像 去掉 “enhanced” 这个属性就可以了。 没仔细去研究。
提供一个解决这个问题的思路
解释: scroll-into-view 的元素 如果出现在画面中是不会出现效果的 这样就可以先让他指定为一个位置再去添加内容就不会跑到其他位置了
在做聊天消息列表使用了这个方法,希望能够帮助到大家
上滑触顶加载的时候也会出现这种情况,添加完数据之后会自动回到顶部
的确是v-if 导致了重绘的问题 我遇到的是我并没有使用scroll-view 自己封装的列表组件
不用scroll-view不就好了,我是为了左右滑动而已,直接用css写在view上了
都 2022 了还没解决?
js:
that.setData({
goodsList: [...that.data.goodsList, ... result.data.response.data],
total: result.data.response.dataCount,
})
wxml:
<scroll-view class="table" scroll-x="true" scroll-y="true"
enable-flex="true" >
都 2022 了还没解决?官方的工作人员呢?
有新的进展么
遇到同样的问题,不过我的 html 结构是 tabs 组件里头包裹了一层 scroll-view ,当我 scroll-view 加载更多(list 数据没有使用二维数组),scroll-view 页面会跳到顶部;
经过测试,我修改 tabs 组件,将其 swiper 删除,用 slot (name=tab-content-0) 来代替,加载更多后,就没有出现跳到顶部的问题了
结构见下图(图片标注有误,应该是tabs[0].list 一维数组)
tabs: [{
title: '全部',
orders: [],
pageNumber: 1,
hasMore: false
},
...]
this.setData({
tabs: tabsData
})