mpvue 组件updated莫名其妙触发

qojgxg4l  于 4个月前  发布在  其他
关注(0)|答案(6)|浏览(44)

[问题简单描述]

页面出现数据更新,不是传入组件的数据,但是组件仍会触发updated生命周期

问题复现步骤:

  1. [第一步]
    组件代码

页面

  1. [第二步]
    页面点击p标签控制台输出

  1. [其他步骤...]

期望的表现:
是我的理解有问题吗,updated不应该被触发啊
[在这里描述期望的表现]

观察到的表现:

[在这里描述观察到的表现]

屏幕截图和动态 GIF 图

![复现步骤的屏幕截图和动态 GIF 图](图片的 url)

kokeuurv

kokeuurv1#

我也发现了这个问题,更新data中的某个数据,页面中的其他组件数据也会被更新,Vue$3.prototype.$updateDataToMP这个方法一直被调用

gg58donl

gg58donl2#

@lichenabson 是我们这个问题太低能了吗。。为什么没人回复,话说你搞明白了吗

6ss1mwsb

6ss1mwsb3#

@KamiJam 问题出在mpvue/index.js initRender函数中

这边的parentData && parentData.attrs永远是个对象,而在defineReactive$$1触发set的时候,

判断两个对象 是永远不相等的,所以会触发组件的wacher的update

这个不是mpvue的问题,我看vue源码也是这么写的
我为了性能问题,所以暂时把defineReactive$$1(vm, '$attrs', parentData && parentData.attrs, null, true);这行注释了

pobjuy32

pobjuy324#

你好, 注释之后会有其他影响吗?

cczfrluj

cczfrluj5#

@zuonidelaowang $attrs 无法使用.在某些业务场景下,组件生命周期没有按预期情况工作

kmynzznz

kmynzznz6#

issue超过30天无更新或响应,7天后将自动关闭,如果问题状态有更新请及时更新issue

相关问题