以上示例代码将事件监听器对象限制为 button
元素,如果我们在框架开发中想要使用 EventBus 来实现夸组件通信的话,我们就可以将事件监听器对象调整为 document
或是 window
。
以下示例模拟了上述行为:
是的,我们实际上是使用了 dispatchEvent 加上 CustomEvent 来完成了自定义事件触发的过程,使用原生的 addEventListener
来完成添加观察者的行为。
使用原生方案实现的一个好处是不需要引入额外的库,不会增加项目体积,同时还兼容各种框架,但缺点是需要手动维护事件,并且只能在非SSR的情况下使用,除此之外,CustomEvent
在 IE 上使用也会有兼容性问题(万恶的IE)。
触发其他组件按钮中的方法
其实平时在框架开发中,偶尔也会遇到调用其他组件的方法,比如说A组件内的一个按钮点击以后需要触发和B组件中某个按钮点击以后执行的事件,我们就可以利用 HTML 中 <label />
元素的 for
属性与目标按钮的 id
属性绑定:
以下示例模拟了上述行为:
以上。