从Node.js事件触发器到Vue自定义事件的深入讲解
node.js中的事件触发器所引发的思考
今天在看 node.js 文档的时候讲到事件触发器,其中的 emit 方法让我想到了 vue 中的自定义事件,借此我对 vue 又有了新的理解,所以将我的理解记录下来,留作学习笔记。
node.js中的事件触发器
node.js 为我们提供了一个事件模块:eventemitter,我们可以用它来处理事件
const eventemitter = require('events') const eventemitter = new eventemitter()
eventemitter 对象上有两个方法:on 和 emit
- on 用于添加自定义事件,注册回调函数
- emit 用于触发事件,并将参数传递给回调函数
eventemitter.on('start', (e) => { console.log(e) }) eventemitter.emit('start', 'started')
控制台将会打印 started
vue中的自定义事件
给组件添加自定义事件,下面示例代码中的 enlarge-text 事件就是我们自己定义的事件,onenlargetext 则是事件触发时所要执行的回调函数,这里的 onenlargetext 是一个函数指针,指向 methods 中所定义的 onenlargetext 函数。既然是回调函数,所以可能会有参数传给它,那么自定义事件的回调函数中的参数是谁传递给它的,具体含义又是什么呢?
<blog-post ... @enlarge-text="onenlargetext"> </blog-post> methods: { onenlargetext: function (enlargeamount) { this.postfontsize += enlargeamount } }
子组件事件处理中可以通过内建的 「$emit」 方法传入父组件自定义事件名来触发这个自定义事件,并且通过 「$emit」 的第二个参数将需要传递给父组件的数据抛出,这样,自定义事件的回调函数中的参数来源也就明白了,就是 「$emit」 方法的第二个参数,这里可以直接抛出一个更加灵活的对象。
<button @click="$emit('enlarge-text', 0.1)"> enlarge text </button>
到这里我们可以看到,vue 中的自定义事件和 node.js 中的事件触发器的理念非常相似,vue 中自定义事件的注册是在父组件中完成的,而触发是在子组件中完成的。至此,就完成了对 vue 自定义事件的解释。
参考资源
总结
到此这篇关于从node.js事件触发器到vue自定义事件的文章就介绍到这了,更多相关node.js事件触发器到vue自定义事件内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!