在vue2中.0不推荐使用事件$dispatch$broadcast.

我发现$dispatch$emit相似.

他们之间有什么区别?迁移时直接将$dispatch替换为$emit安全吗.

推荐答案

不,你不能用$emit代替$disptach.无论您在哪里使用它来从child to parent进行通信,您都可以替换它,但对于其他情况,您可能需要采取其他方法.

来自documentation人(Evan you在Upgrade Tips中的类似 comments ):

这些方法最常见的用途之一是在父母与其直接子女之间进行沟通.在这些情况下,您实际上可以听到v-on children 发出的$emit.这使您能够以更明确的方式保持活动的便利性.

然而,在远亲/远祖之间交流时,$emit对你没有帮助.相反,最简单的升级可能是使用集中式事件中心.

$dispatch份文件中

分派一个事件,首先在实例本身上触发它,然后沿着父链向上传播.当它触发父事件侦听器时,传播停止,除非该侦听器返回true.

另一方面,$emit:

在当前实例上触发事件.任何附加参数都将被传递到侦听器的回调函数中.

所以你可以看到,if you are passing communication to multiple layer of parent elements via 100, you have to handle that code differently with 101

Vue.js相关问答推荐

在VueJS中卸载元素之前是否应该删除JavaScript事件收件箱?

Select 项目后,Vuetify v-select在select后面显示数字1

带有参数的 Vuex 映射 Getter - 缓存?

vue.js 在 App.vue 中获取路由名称

如何从特定索引呈现 v-for

为什么 Vue 路由/Webpack 开发服务器现在在页面刷新时显示无法获取/路径?

Vue.js 从模板中分离样式

如何使用 vue-resource 添加额外的标头来发布请求?

如何在 Vue.js 中传递 $router.push 中的数据?

如何使表格行可点击并展开行 - vue.js - element-ui

如何使用 vue.js 获取所选选项的索引

v-if inside v-for - 在两列中显示项目列表

如何从 v-for 创建的对象中绑定多个类?

即使在生产模式下构建,VueJS 也会显示开发模式开发模式消息

如何从方法内部访问数据

更改事件上的 Select2 在 Vuejs 中不起作用

在子元素 vueJS.2 之间切换active类

NPM:403 禁止 - PUT http://registry.npmjs.org/[package-name] - 禁止

Vue.JS 2.0 修改不相关数据时速度慢

使用 CloudFront 部署在 S3 上的 VueJS 应用程序的指定的密钥不存在