1***@qq.com
1***@qq.com
  • 发布:2021-08-18 05:55
  • 更新:2021-08-18 05:56
  • 阅读:358

【报Bug】nvue中绑定key后还是无法保留滚动条位置

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: win10

HBuilderX类型: 正式

HBuilderX版本号: 3.1.22

手机系统: Android

手机系统版本号: Android 10

手机厂商: 华为

手机机型: HONOR X10

页面类型: nvue

打包方式: 云端

项目创建方式: HBuilderX

示例代码:

HTML代码

<view class='content'>  
        <scroll-view class="box" ref='box' :scroll-y="true" @scrolltoupper='onScrolltoupper'>  
            <view class="btn" v-for="(item,index) in lists" :key='item.id'>  
                {{item.name}}  
            </view>  
        </scroll-view>  
        <view class="btn" @tap='onAdd' style="background-color: #0071FF;margin-top: 100rpx;">  
            添加  
        </view>  
    </view>  

script代码

export default{  
        data(){  
            return{  
                lists:[  
                    {name:'这是个1',id:1},  
                    {name:'这是个2',id:2},  
                    {name:'这是个3',id:3},  
                    {name:'这是个4',id:4},  
                    {name:'这是个5',id:5},  
                    {name:'这是个6',id:6},  
                    {name:'这是个7',id:7},  
                    {name:'这是个8',id:8},  
                    {name:'这是个9',id:9},  
                    {name:'这是个10',id:10}  
                ],  
                num:0,  
                top:0  
            }  
        },  
        methods:{  
            onAdd(){  
                this.lists.unshift({  
                        "name": "兔兔"+this.num,  
                        "id":this.lists.length+1  
                    });  
                this.num++;  
                console.log(this.lists)  
            },  
        }  

    }  

CSS代码

.btn{  
        width: 750rpx;  
        height: 100rpx;  
        background: yellow;  
        margin-top: 20rpx;  
        display: flex;  
        align-items: center;  
        justify-content: center;  
        font-size: 30rpx;  
        font-weight: bold;  
    }  
    .content{  
        width: 750rpx;  
        height: 100vh;//nvue中改成flex: 1;  
        background-color: pink;  
        display: flex;  
        flex-direction: column;  
    }  
    .box{  
        width: 750rpx;  
        height: 800rpx;  
        background-color: blue;  
    }  
    .sec{  
        width: 750rpx;  
        height: 100%;  
        background-color: red;  
    }

操作步骤:

逐步复制以上代码,将滚动条滚之中间,点击添加按钮来添加数据

预期结果:

保留滚动条位置,不会因为插入数据产生蠕动效果

实际结果:

在安卓系统的vue文件中是有效的,列表并不会产生蠕动且保留滚动条原有位置,但是ios的vue,nvue,以及安卓的nvue文件都会蠕动,滚动条位置随着插入不断往下滚动

bug描述:

使用vue中使用scroll-view组件,只要绑定key值,中途插入(unshift)数据,滚动条仍然会保留插入之前的位置,不会主动往下蠕动(ios中无效);
但是在Nvue中无论是IOS还是安卓都无效,插入数据会一直蠕动

2021-08-18 05:55 负责人:无 分享
已邀请:

该问题目前已经被锁定, 无法添加新回复