Javascript 为什么Vue.js有事件而不仅仅是功能道具?

Javascript 为什么Vue.js有事件而不仅仅是功能道具?,javascript,vue.js,Javascript,Vue.js,在Vue.js中,我看到过这样的说法,即使用属性传递回调是一种反模式 但这对我来说毫无意义。提到的问题: 通过将函数作为道具向下传递,可以通过双向数据绑定将两个父子组件链接在一起 这些事件机械地做着与回调道具完全相同的事情,所以这不符合逻辑 随着应用程序越来越大,其他开发人员也加入进来,他们将查看子组件代码,并必须找出它是哪个回调函数以及它来自何处 您可以将单词回调函数prop替换为事件,您也会遇到同样的问题 使用函数而不是字符串名称可以避免烤肉串案例问题。此外,函数道具允许typescript

在Vue.js中,我看到过这样的说法,即使用属性传递回调是一种反模式

但这对我来说毫无意义。提到的问题:

通过将函数作为道具向下传递,可以通过双向数据绑定将两个父子组件链接在一起

这些事件机械地做着与回调道具完全相同的事情,所以这不符合逻辑

随着应用程序越来越大,其他开发人员也加入进来,他们将查看子组件代码,并必须找出它是哪个回调函数以及它来自何处

您可以将单词
回调函数prop
替换为
事件
,您也会遇到同样的问题

使用函数而不是字符串名称可以避免烤肉串案例问题。此外,函数道具允许typescript验证函数签名是否兼容。我认为事件应该被移除,并完全用回调道具替换。我认为删除events技术的唯一缺点是
click
等事件的名称空间问题,您可能希望将其作为属性


将事件作为一个系统而不是具有一些神奇属性的设计原因是什么?回调属性是一种反模式,还是只是一种口味问题?

我的意思是,使用事件配置通信要容易得多,因为Vue确实包含一个基于事件的系统。您不必担心组件是否真的在侦听该事件(在基于回调的通知系统中,您必须通过默认回调或空检查来处理可能不存在的回调)。另外,更容易弄清楚Vue组件上的事件和道具是什么(
@
vs
),而且我认为可读性是Vue.js非常明确的设计问题,因为它是目前最具可读性的现代js UI框架。不是真的,它主要只是一个观点哈哈。对此的任何回答都很可能是一种意见,除非它来自埃文·尤本人,我认为没有人愿意冒着被否决票的风险。