connectedCallback 中的自定义 Web 组件设置属性

Custom Web Components setting properties in connectedCallback

我在 Salesforce 堆栈上发布了一个类似的 question,上下文是 Lightning Web 组件(它只是 HTML Web 组件的扩展)。我在这里问是因为我想接触更多的观众。

在他们的文档中,他们说不建议 get/set connectedCallback() 挂钩中自定义组件的属性。这里有谁知道为什么会给出这个建议,因为我专门为 getting/setting 属性使用这个挂钩。

使用 connectedCallback 回调处理程序读取或设置属性没有问题。最初的指导方针与道具可以在 connectedCallback 之后更改这一事实有关,并且只有当组件附加到 DOM 树时才会执行此功能。这意味着您的代码将无法正确处理反应性。

这本身不是技术限制;在处理 Web 组件时,它更像是良好的架构指南。

一般经验法则:

  1. 一次性使用 connectedCallback 模板之类的东西,设置观察(确保在 disconnectedCallback 中清理观察。
  2. 使用 getterssetters 来管理 属性 观察者。此外,不要在 setter 中处理异步工作流。示例 Promise.then() 等。这样做的原因是为了在 prop 更改时正确处理已经 运行 请求的取消。因此,最好使用 connectedCallback.
  3. 中设置的可观察对象