2***@qq.com
2***@qq.com
  • 发布:2021-06-16 10:23
  • 更新:2021-06-16 10:23
  • 阅读:466

props传数组,父子组件数组内容不能同步

分类:uni-app

产品分类: uniapp/小程序/阿里

PC开发环境操作系统: Mac

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

HBuilderX类型: 正式

HBuilderX版本号: 3.1.18

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

基础库版本号: 我不知道啊

项目创建方式: HBuilderX

App下载地址或H5⽹址:

示例代码:

父组件:

<template>  
    <view><test-list :list="listData" @change="onListChange"></test-list></view>  
</template>  

<script>  
export default {  
    name: 'test-container',  
    data() {  
        return {  
            listData: ['aaa', 'bbb']  
        };  
    },  
    methods: {  
        onListChange() {  
            console.log('container', this.listData);  
        }  
    },  
    mounted() {  
        setTimeout(() => {  
            this.listData.push('父组件push的');  
        }, 600);  
    }  
};  
</script>

子组件:

<template>  
    <view>  
        <view v-for="(item, index) in list" :key="index">{{ item }}</view>  
    </view>  
</template>  

<script>  
export default {  
    name: 'test-list',  
    props: {  
        list: {  
            type: Array,  
            default() {  
                return [];  
            }  
        }  
    },  
    methods: {  
        change() {  
            this.$emit('change');  
        }  
    },  
    mounted() {  
        setTimeout(() => {  
            this.list.push('子组件push的');  
            this.$forceUpdate();  
            console.log('list', this.list.length, this.list);  
            this.change();  
        }, 1000);  
    }  
};  
</script>

操作步骤:

这两个组件使用easycom默认目录规范存放,并在页面中使用:

<template>  
    <view class="content">  
        <test-container></test-container>  
    </view>  
</template>

预期结果:

父组件的 listData 和 子组件的 list 是同步的

实际结果:

在子组件setTimeout中修改不能同步

bug描述:

子组件修改props中的数组无效,子组件的v-for不会渲染,父组件的数组数据也不会改变

2021-06-16 10:23 负责人:无 分享
已邀请:

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