特哦那首歌
特哦那首歌
  • 发布:2021-07-22 11:47
  • 更新:2021-08-09 11:04
  • 阅读:386

【报Bug】页面更新数组类型的变量、组件的prop使用该变量的表达式赋值,当数组更新时,组件的prop不会刷新

分类:uni-app

产品分类: uniapp/小程序/微信

PC开发环境操作系统: Windows

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

HBuilderX类型: 正式

HBuilderX版本号: 3.1.22

第三方开发者工具版本号: Stable 1.05.2103200

基础库版本号: 2.18.0

项目创建方式: HBuilderX

示例代码:
Footer:  
<template>  
    <view>  
        <!--component/Footer/Footer.wxml-->  
        {{length1}}|  
        {{length2}}  
    </view>  
</template>  

<script>  
    export default {  
        data() {  
            return {};  
        },  

        components: {},  
        props: {  
            length1: Boolean,  
            length2: Boolean  
        },  
        methods: {}  
    };  
</script>  

Page:  
<template>  
    <view class="content">  
        <image class="logo" src="/static/logo.png"></image>  
        页面的值:  
        <view class="text-area">  
            <text class="title">{{(list1.length>0)}}|{{(list2.length>0)}}</text>  
        </view>  
        <div>组件内的值: <Footer :length1="(list1.length>0)" :length2="(list2.length>0)"></Footer>  
        </div>  
        <button @click="tapAdd">改变值</button>  
    </view>  
</template>  
<script>  
    export default {  
        data() {  
            return {  
                title: 'Hello',  
                i: 0,  
                list1: null,  
                list2: []  
            }  
        },  
        onLoad() {  

        },  
        methods: {  
            tapAdd() {  
                this.i++;  
                if (this.i == 1) {  
                    this.list1 = [];  
                }  
                if (this.i == 2) {  
                    this.list1.push({});  
                }  
                if (this.i == 3) {  
                    this.list1 = [{}];  
                }  
                this.list2.push({});  
            }  
        }  
    }  
</script>

如代码示例。组件Footer中有两个prop,length1和length2,组件中直接显示。赋值时使用判断表达式(list1.length>0)。页面中直接输出表达式的值作为对比。

操作步骤:

多次点击“改变值”按钮,观察页面中显示的数据。

预期结果:

页面中显示的值、组件中显示的值,应该一致才对

实际结果:

点击按钮后修改list1和list2数组。可以发现页面中显示的值与组件中的值并不一致。页面中的值更新了,组件中的值没有更新。

bug描述:

页面更新数组类型的变量、组件的prop使用该变量的表达式赋值,当数组更新时,页面中的变量正常更新,但组件的prop变量不会刷新。(已上传完整测试项目,见附件)

2021-07-22 11:47 负责人:无 分享
已邀请:
DCloud_UNI_GSQ

DCloud_UNI_GSQ

https://github.com/dcloudio/uni-app/issues/1827

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