在vue2.0中,不推荐使用事件$dispatch
和$broadcast
。
我发现$dispatch
与$emit
类似。
它们之间的区别是什么?迁移时直接将$dispatch
替换为$emit
是否安全。
答案 0 :(得分:13)
不,您无法将$disptach
替换为$emit
。您可以替换它,无论您使用它从孩子到父母进行交流,但对于其他情况,您可能需要采取其他方法。
来自documentation(Evan你在Upgrade Tips中的类似评论):
的文档这些方法最常见的用途之一是在父母与其直接子女之间进行交流。在这些情况下,您实际上可以通过v-on侦听来自孩子的$ emit。这使您可以更加明确地保持事件的便利性。
但是,当远距离后代/祖先之间进行通信时,$ emit将无法帮助您。相反,最简单的升级是使用集中式事件中心。
调度事件,首先在实例本身上触发事件,然后沿父链向上传播。传播在触发父事件侦听器时停止,除非该侦听器返回true。
另一方面$emit:
在当前实例上触发事件。任何其他参数都将传递给侦听器的回调函数。
所以你可以看到,如果您通过$dispatch
将通信传递给多层父元素,则必须使用$emit