课程章节介绍
同学们,今天我们来聊聊 Lightning Web Components 里一个很贴心的小指令——`lwc:spread`。
你有没有遇到过这样的情况?你有一个子组件,它暴露了很多 `@api` 属性,比如名字、年龄、地址、电话等等。父组件从后端拿到一个 JavaScript 对象,正好包含了这些字段,难道你要在模板里一个一个手动写属性吗?不仅麻烦,还容易漏掉或出错。这时候,`lwc:spread` 就是你的好帮手。
它的作用很简单:让你直接把一个对象“展开”,然后一次性传递给子组件。你只需要在子组件标签上加一个 `lwc:spread={对象}`,LWC 就会自动把对象的第一层属性,和子组件 `@api` 声明的属性名做匹配,并一一赋值过去。
举个例子,假设你有个子组件叫 `my-child`,它公开了 `name` 和 `age` 两个属性。父组件里你拿到一个对象 `person = { name: '小明', age: 25 }`,你就不必这样写:
```html
```
而可以简化为:
```html
```
是不是清爽多了?尤其当配置对象有很多字段时,这个功能简直是救星。
不过用的时候有几个规矩要记住。第一,`lwc:spread` 只展开对象的 ,第一层, 属性。如果对象里面还有嵌套对象,LWC 可不会自动帮你一层层拆开,你得自己提前处理好,或者让子组件接收一个对象类型的属性。
第二,也是比较关键的一点:`lwc:spread` 总是 ,最后应用,。这是什么意思呢?意思是,如果你在同一个子组件标签上,既直接写了某个属性,又在 spread 对象里包含了同名的属性,那么最终生效的,会是 spread 对象里的值,因为它后“覆盖”上去。
比如你这样写:
```html
```
而 `person` 对象里也有 `name: '小明'`,那最终传给子组件的 `name` 还是 “小明”。这可能跟直觉有点反,但记住这个规则就好:“spread 说了算,因为它最后动手。”
第三,每个 HTML 元素上,你 ,只能用一次, `lwc:spread`。想传多个对象,需要先自己在 JavaScript 里把对象合并好。
总结一下,`lwc:spread` 非常适合那些需要传递一大串属性的场景,代码更干净,维护也更省心。要是你想看实际代码案例,可以到 Salesforce 官方的 `lwc-recipes` 仓库里搜一下 `apiSpread` 组件,跟着敲一遍印象会更深刻。
好了,关于 `lwc:spread` 我们就讲到这,下节课见!
关键词
LWC
Lightning Web Components
Salesforce