Check Existing Values & Special Attributes

DEX475 - Fields, Properties, and Attributes

📄 第 134 页 🎬 视频课程

课程章节介绍

同学们,今天我们聊聊在Lightning Web Components里“反映属性”时的一个最佳实践。 想象一下,你的组件要暴露一个属性,比如 `tabindex`。你当然希望它有个合理的默认值,方便键盘操作。但更重要的是——得先看看使用者有没有自己设定过这个值。 这就是我们要牢记的原则:,在应用你自己的默认值之前,先检查消费者是不是已经设置了值。, 举个例子,在 `linkedCallback` 这个生命周期钩子里,你可以通过 `this.getProperty('tabindex')` 来检查。如果它返回的是 `false`,说明外部什么也没传,这时候你再去把它设成 `'0'`,保证键盘可访问性。如果外部已经传了值,比如 `'-1'`,那你就别覆盖它了,尊重使用者的选择。这样既提供了贴心的默认行为,又不会随意篡改别人的意图。 另外,有一组特殊的属性,像 `for`、`aria-activedescendant`、`aria-controls`、`aria-describedby`、`aria-details`、`aria-errormessage`、`aria-flowto`、`aria-labelledby` 和 `aria-owns`,你需要,始终,使用 `setProperty` 和 `getProperty` 来存取它们,因为它们涉及到无障碍特性,直接操作原生HTML属性有时会不生效。 最后提醒一下,如果你想从渲染出来的HTML里,彻底移除,某个属性,而不是仅仅把它清空,那应该调用 `removeAttribute()` 方法。 这样来处理反射属性,组件就会既灵活又安全。好,这个小技巧就讲到这里,下次我们接着看别的细节。

关键词

LWC Lightning Web Components Salesforce