Owner — The Template Owner

DEX475 - Composition

📄 第 66 页 🎬 视频课程

课程章节介绍

同学们,我们继续来看Lightning Web Components中一个非常核心的概念——所有者,英文叫Owner。你可以把它想象成这个组件小王国里的国王,是所有嵌套组件的“老板”。 那么在todoApp这个例子里,谁是所有者呢?就是最外层的那个`c-todo-app`。它的模板里放了很多子组件,比如`c-todo-item`,所以它就是所有者,是拥有模板的那个组件。 所有者有三个很厉害的功能,我们一个一个说。 第一个,,它可以直接通过HTML属性去设置任何子组件的公开属性。, 比如说,子组件有一个用`@api`声明的title属性,所有者在自己的模板上就这么写:``,数据就直接传进去了,简单又直接。 第二个,,它可以拿到子组件的引用,然后直接调用子组件的方法。, 怎么拿呢?用模板查询。在JavaScript里,我们写`this.template.querySelector('c-todo-item')`,这样就能抓到子组件的实例。然后,如果子组件用`@api`公开了一个叫`refresh`的方法,我们就可以直接调用它,像`child.refresh()`。这里注意一下,slides上可能印的是querytext,那是因为笔误,咱们记住是`template.querySelector`,标准的Web API。 第三个,也是最强大的一个,,所有者可以监听子组件触发的任何事件。, 比方说,子组件里用户点了个按钮,它用`this.dispatchEvent`发了一个自定义事件叫做`close`。那所有者只要在模板里用`onc lose`这种声明式的监听,或者在自己的JavaScript里用`addEventListener`,就能立刻收到通知,然后想干什么就干什么。这样一来,子组件里发生了什么,所有者完全看得见。 你看,这三个功能结合起来,所有者就成了一个完美的协调器——它控制数据往下流,处理从下冒上来的事件,让所有嵌套的组件按一个统一的节奏来工作。这就是LWC里所有者模式的核心思想,是不是很清楚?好,我们继续看下一页。

关键词

LWC Lightning Web Components Salesforce