评论

EventChannel 页面间数据传递 是 引用类型

通过EventChannel页面传递数据是引用类型

项目中遇到,通过navigateTo跳转新页面,通过EventChannel,acceptDataFromOpenerPage,获取到数据。

在新页面中setData数据、修改数据,返回老页面,再回到新页面,数据竟然是上次setData改变过的数据,而不是老页面原有的数据。

说明通过EventChannel传递的数据是引用类型数据。

解决办法是在新页面获取到数据后,深拷贝数据,再setData,处理修改数据。这样保持独立,不会污染老页面的数据。

最后一次编辑于  03-24  
点赞 1
收藏
评论

2 个评论

  • *.*
    *.*
    04-23

    验证过了,就如作者所言。其实还是基础知识,js基本类型是值传递,对象是共享传递,直接修改对象不会对原对象造成影响,但是修改对象的属性时会影响到原对象。因为对象传递本质上传的是地址,直接通过赋值修改对象就是将对象重新指向了新的地址,而修改对象的属性时地址并没有发生改变。

    04-23
    赞同
    回复
  • *.*
    *.*
    04-23

    真的?感觉不太可能

    04-23
    赞同
    回复
登录 后发表内容