课程章节介绍
同学们,咱们今天聊一个实战中非常有用的话题——如何自定义 Lightning Datatable 的单元格外观。默认表格只能展示文本、数字这类基础格式,但业务里咱们总想放个进度条、头像,或者可点击的按钮对吧?这就用到“自定义数据类型”。
简单说,就是定义一个静态的 `customTypes` 对象来告诉表格:遇到某种类型时,用我给你的模板来渲染。这个对象挂在扩展自 `LightningDatatable` 的组件上。每个自定义类型要指定三个东西:
1. ,模板,:一个导入的 HTML 文件,决定了单元格长什么样。
2. ,typeLCS 数组,(Lightning Component Style?其实可以理解为模板里能访问的自定义属性名列表):比如你传了个 `highlightColor`,模板里就能用 `typeLCS.highlightColor` 拿到。
3. ,标准单元格布局,:是个布尔值,选 `true` 就用系统自带的内边距、对齐和可访问性支持,省事又合规;选 `false` 就是裸布局,完全自己控制。
模板里,你可以直接写简单的 HTML 标签,也可以在里面嵌入子组件(嗯,没错,把其他组件拖进来用)。那怎么跟数据联动呢?单元格的值用 `{value}` 就能取到,那些自定义属性就用 `{typeLCS.属性名}` 访问。
接下来是使用方式。我们需要做一个包装器组件,让它继承 `LightningDatatable`,并在里面通过 `@wire` 或者直接定义列时,用 `type: '自定义类型名'` 来引用。提到列,你还能基于 `fieldName` 做类映射,有条件地加上 CSS 类,控制样式。比如某个字段值大于阈值时标红。
总结一下:想扩展表格能力,就写一个自定义类型对象,配上模板和属性列表,继承基类组件,然后在列定义里指定类型,模板会自动接收数据和额外属性。是不是感觉一下子灵活多了?大家先理解这个原理,下一节我们动手写一个带状态指示灯的表格练练手。
关键词
LWC
Lightning Web Components
Salesforce