关于 triggerEvent 的一点bug
发布于 7 年前 作者 renjie 19717 次浏览 来自 问答

可能有点吹毛求疵了,但是确实看着很不舒服,虽然并没有对业务造成什么影响。

子组件内 调用 triggerEvent(‘someevent’) 向父组件传递事件,父组件接收该事件后 卸载了(wx:if) 子组件,此时会报错,在someevent 内添加一个延时这个错误就不会出现,。。。问题应该是 子组件生命周期走完之前,子组件被卸载了。。。,

2 回复

你好,我大致猜出是个什么问题。

需要注意的点是:triggerEvent 是一个同步过程。如果在父组件 setData 过程中触发了子组件的 triggerEvent (此时父组件的此次 setData 还没有完全执行完毕),进而使得父组件又进行了一次 setData ,就有可能出现这个情况。

目前可以用一个 setTimeout 来规避问题(就像你上面做的那样)。我们在考虑添加一个更友好的接口来处理需要异步 triggerEvent 的情况。

你好,方不方便提供个代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html),我们定位下问题呢?

回到顶部