获得过 0 次赞
回答过的问题获得 0 次赞
分享过的文章/案例获得 0 次赞
评论与回复获得 0 次赞
- navigateTo用事件(EventChannel)传值时是 值传递 还是 引用传递?
复现流程: 在navigate传值前打印传值参数,在被打开页面onload eventChannel中,修改传入的参数,修改完后调用eventChannel.emit 触发上个页面函数,在函数中打印上次打印的参数,其中会包括在被打开页面中修改过的参数 js基本类型是值传递,对象是共享传递,直接修改对象不会对原对象造成影响,但是修改对象值时会修改到原对象,本质上对象还是使用的同一个地址
2021-12-24 - EventChannel 页面间数据传递 是 引用类型
项目中遇到,通过navigateTo跳转新页面,通过EventChannel,acceptDataFromOpenerPage,获取到数据。 在新页面中setData数据、修改数据,返回老页面,再回到新页面,数据竟然是上次setData改变过的数据,而不是老页面原有的数据。 说明通过EventChannel传递的数据是引用类型数据。 解决办法是在新页面获取到数据后,深拷贝数据,再setData,处理修改数据。这样保持独立,不会污染老页面的数据。
2022-03-24