l***@qq.com
l***@qq.com
  • 发布:2020-01-14 19:17
  • 更新:2022-08-13 14:50
  • 阅读:1539

【报Bug】V3引擎v-for数据修改后不会更新

分类:uni-app

[内容]
V3引擎v-for循环数据修改后不会更新,只有APP端这样,无论是自定义基座还是标准基座都存在此问题。项目已上传(HBuilderX创建的默认项目)。

IDE运行环境说明

[IDE版本号] HBuilderX 2.5.1.20200103和HBuilderX-alpha 2.5.6.20200113-alpha都存在此问题

重现步骤

<template>  
    <view class="data-list">  
        <button @click="upData()">更新数据</button>  
        <view class="info" v-for="item in items" @click="clickItem(item)" :key="item.id">  
            {{item.name}}  
        </view>  
    </view>  
</template>  

<script>  
    export default {  
        data() {  
            return {  
                title: 'Hello',  
                itmes: []   
            }  
        },  
        onLoad() {  
            //1.初始化赋值  
            let items = [];  
            for (var i = 0; i < 10; i++) {  
                items.push({  
                    id: i,  
                    name: '名称' + i  
                })  
            }  
            this.items = items;  
        },  
        methods: {  
            upData(){  
                let items = [];  
                for (var i = 10; i < 25; i++) {  
                    items.push({  
                        id: i,  
                        name: '名称' + i  
                    })  
                }  
                console.log('更新数据',{data:this.items});  

                //2.重新赋值后页面数据不会更新,必须强制刷新才会生效  
                this.items = items;  

                //3.强制重新渲染  
                this.$forceUpdate();  

            },  
            clickItem(item) {  
                //4.重新渲染后click事件传递的数据依然是第一次赋值的数据  
                uni.showToast({  
                    title:item.name  
                })  
            }  
        }  
    }  
</script>  

<style lang="scss">  
    .data-list {  
        display: flex;  
        flex-direction: column;  

        .info {  
            padding: 20rpx;  
            margin-top: 20rpx;  
        }  
    }  
</style>  
2020-01-14 19:17 负责人:无 分享
已邀请:

最佳回复

DCloud_uniCloud_WYQ

DCloud_uniCloud_WYQ

已确认Bug,感谢反馈

hackyo_ma

hackyo_ma

我也有相同问题

  • hackyo_ma

    太坑了这个问题,相当严重啊,v-for更新后只有界面内容更新了。

    2020-01-15 15:15

  • hackyo_ma

    @click还是之前的内容

    2020-01-15 15:16

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

    这么严重的BUG官方也不回复一下

    2020-01-15 21:02

DCloud_uniCloud_WYQ

DCloud_uniCloud_WYQ

<view class="info" v-for="(item,index) in items" @click="clickItem(item)" :key="index">{{item.name}}</view>

先这么用着

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

    希望尽快修复,项目里面一百多个for循环,嵌套for使用index会导致key冲突

    2020-01-17 09:16

DCloud_uniCloud_WYQ

DCloud_uniCloud_WYQ

更新到2.5.8以上版本的HBuilderX,已修复此问题

  • c***@qq.com

    版本2.6.1。还是有这个问题。代码贴下面

    2020-02-29 11:44

  • 1***@qq.com

    版本2.6.3,最新版本,仍然有这个bug,太坑了。一个多月了,贵团队决定4月份就弃用老编译模式,请做好准备好吗,请体谅我们这些白痴好吗????

    2020-03-08 22:38

  • DCloud_uniCloud_WYQ

    回复 1***@qq.com: 开新帖子邀请一下我,传一份能运行且能复现问题的demo我验证一下

    2020-03-09 10:07

c***@qq.com

c***@qq.com

按顺序删除 A, B, C。删除B时,监听器参数实际是A

<template>  
      <view style="margin-top: 20vw;">  
        <view class="item" v-for="(item, index) in items" :key="index">  
            <button @click="del(index)">删除{{item.name}}</button>  
        </view>  
    </view>  
</template>
    export default {  
        data() {  
            return {  
                items: {  
                    'a': {name: 'a', id: 'a'},  
                    'b': {name: 'b', id: 'b'},  
                    'c': {name: 'c', id: 'c'},  
                },  
            }  
        },  
        methods: {  
            del(a) {  
                console.log(a);  
                this.$delete(this.items, a);  
                // 赋值也是这样  
                // const newItems = {};  
                // for(const key of Object.keys(this.items)) {  
                //     if (key !== a) {  
                //         newItems[key] = this.items[key];  
                //     }  
                // }  
                // this.items = newItems;  
            },  
        }  
    }
xkkkA

xkkkA

2022了 我在使用vue3时又发现了这个Bug

qjh22

qjh22

啥玩意啊,2022.8,还没修复,,pc端可以,app就有问题

  • DCloud_uniCloud_WYQ

    如仍有问题请新开帖子,最好带上可以复现问题的demo

    2022-08-15 11:42

要回复问题请先登录注册