3***@163.com
3***@163.com
  • 发布:2023-12-05 00:30
  • 更新:2023-12-05 10:23
  • 阅读:148

uni.$emit传数组字段A给子页面,子页面修改后,后退到父页面,父页面数组字段A的值也跟着变了

分类:uni-app

父页面:

export default {  
    data() {  
        return {  
            type: '水果',  
            tags: ['苹果','梨子','香蕉']  
        }  
    },  
    methods: {  
        openChild() {  
            uni.navigateTo({  
                url: '/pages/child',  
                success: (res) => {  
                    uni.$emit('xdata', {type: this.type, tags: this.tags});  
                }  
            }  
        }  
    }  
}  

子页面:

export default {  
    data() {  
        return {  
            type: '',  
            tags: []  
        }  
    },  
    onLoad: function (option) {  
        uni.$once('xdata', (res) => {  
            this.type = res.type;  
        this.tags = res.tags;  
        });  
    }  
}

子页面修改本身的type和tags如下:
{type:'蔬菜', tags: ['青菜', '菠菜', '大白菜']}

然后点击导航栏后退按钮,返回到父页面,
此时父页面的tags的值变成子页面的tags的值了 ['青菜', '菠菜', '大白菜'],
然而type却没改变,关键并没有从子页面传递消息给父页面说要变值了,不知道为什么会这样?

2023-12-05 00:30 负责人:无 分享
已邀请:

最佳回复

DCloud_UNI_OttoJi

DCloud_UNI_OttoJi - 日常回复 uni-app/x 问题,如果艾特我没看到,请主动私信

根据你的描述和解决问题的思路,楼上给出了答案,你可以了解 js 对象和简单值的区别。对象、数组是引用类型

冬日睛天

冬日睛天

可能是数组有弱引用导致的。

3***@163.com

3***@163.com (作者)

数组会跟着变,字符串的就不会变,非常奇怪,两边字段名字换成不一样的,依然不能解决子页面修改数组后,父页面也修改了数组的问题

3***@163.com

3***@163.com (作者)

将数组字段 JSON.stringify 后再传递就没问题了,但不知道为什么数组就是不行

要回复问题请先登录注册