课程章节介绍
我们来看一下这一页幻灯片,它讲的是如何为咱们的 Lightning Web 组件设置 ARIA 属性的默认值。
平时我们在写组件的时候,常常需要给像按钮、菜单这些元素加上 ARIA 属性,帮助屏幕阅读器理解我们的页面结构。有时候呢,我们作为组件的作者,知道最合理的默认值是什么,比如一个 tab 面板角色就该是 "tab",但我们又希望使用这个组件的人,在特殊情况下也能自己去修改它。
这时候,幻灯片告诉咱们一个很好的模式:在 `linkedCallback()` 这个生命周期勾子里去定义默认值,千万别在 `constructor` 构造函数里做。为什么呢?因为在构造函数执行的时候,组件里的各种元素可能还没准备好,你去设置属性可能会出错。而 `linkedCallback` 是在组件已经连上 DOM 了才调用,这个时候元素已经就绪了,设置默认值就安全了。
而且啊,消费者的显式赋值永远比我们的默认值优先级高。也就是说,如果使用组件的人明确写了一个属性值,那就听他的;如果他没写,咱们的默认值才会生效。这样的设计很灵活,对吧?
不过有一些属性是绝对不希望被人不小心改掉的,比如一个按钮的 `role` 属性,它就应该是 "button",要是被人改成了 "tab",那可就乱套了。对于这种永远不能变的静态值,幻灯片推荐用一个小技巧:写一个 setter 函数,但让它什么都不做,直接空着;然后 getter 函数永远返回那个硬编码的固定字符串。这样一来,当用户试图设置这个属性时,我们的空 setter 就把他给的值悄悄丢掉了,而外界读取这个属性时,永远是咱们设定的那个正确的值,这就保护了组件的语义完整性。
总结一下就是,普通的 ARIA 属性,在 `linkedCallback` 里给个默认值,让用户还能覆盖;对于那些必须保持不变的属性,就用空 setter 和硬编码 getter 来锁死,简单又安全。这样咱们写的组件既好用又健壮。
好了,这一页内容就讲到这里。
关键词
LWC
Lightning Web Components
Salesforce