我有一个同事的代码片段,用于Angular组件通信。
这是堆栈https://angular-component-communication-by-input.stackblitz.io
我一直使用Angular的@Input/@Output进行组件通信。我想了解他的解决方案为什么有效,以及描述他所做的事情的正确Javascript术语是什么。
- 他在父组件中定义了一个函数
eventHandler(...args){
console.log(args)
}
- 他将函数传递给子组件
<app-child [clickHandler]="eventHandler"></app-child>
让我困惑的是eventHandler
的用法。为什么不将其用作eventHandler()
?
这里发生了什么?请包括一些Javascript基础知识来解释
他通过引用传递一个函数,基本上说"这里引用函数";,在子组件上,他获取引用并调用它来执行被引用的任何函数。
像这个简单的例子
const example = console.log;
example('Hello'); // this would be the same as saying console.log('Hello')