logo

S2

  • 使用文档
  • API 文档
  • 图表示例
  • 在线体验
  • 更新日志
  • 所有产品antv logo arrow
  • 2.x
  • 简介
  • 快速上手
  • 基础教程
    • 基本概念
      Updated
    • 表形态
      • 透视表
        Updated
      • 明细表
        Updated
    • 字段标记
      Updated
    • 小计总计
    • 排序
      • 基础排序
        Updated
      • 组内排序
        Updated
    • 主题配置
      Updated
    • Tooltip
      Updated
    • 数据格式化
      New
    • 多行文本
      New
    • 国际化
    • 分页
      New
  • 进阶教程
    • 单元格渲染类型
      • 链接
      • 图片
        New
      • 视频
        New
      • 迷你图表
      • 结合@antv/g2
      • 自定义渲染
    • 自定义
      • 自定义 Hook
        Updated
      • 自定义行列头分组
        New
      • 自定义 Icon
        Updated
      • 自定义单元格对齐方式
        Updated
      • 自定义单元格宽高
        Updated
      • 自定义排序操作
        Updated
      • 自定义折叠/展开节点
        New
    • 交互
      • 基础交互
        Updated
      • 自定义交互
      • 隐藏列头
        Updated
      • 行列宽高调整
        Updated
      • 合并单元格
      • 滚动
        Updated
      • 复制与导出
        New
      • 高亮/选中单元格
        New
    • 分析组件
      • 简介
        New
      • 高级排序
        Updated
      • 维度切换
        Updated
      • 导出
        Updated
      • 分页
        Updated
      • 维度下钻
        Updated
    • 表格组件
      • 编辑表
      • 趋势分析表
        Updated
    • 高清适配
      Updated
    • 获取表格实例
    • 表格自适应
    • 获取单元格数据
      Updated
    • 注册 AntV/G 插件
      New
    • 透视组合图
      Experimental
    • Vue 3.0 组件 (停止维护)
  • 扩展阅读
    • 数据流处理
      • 透视表
      • 明细表
    • 布局流程
      • 透视表
      • 明细表
    • 性能介绍
      Updated
  • 贡献指南
  • 常见问题
  • S2 2.0 升级指南

高亮/选中单元格

上一篇
复制与导出
下一篇
简介

Resources

Ant Design
Galacea Effects
Umi-React 应用开发框架
Dumi-组件/文档研发工具
ahooks-React Hooks 库

社区

体验科技专栏
seeconfSEE Conf-蚂蚁体验科技大会

帮助

GitHub
StackOverflow

more products更多产品

Ant DesignAnt Design-企业级 UI 设计语言
yuque语雀-知识创作与分享工具
EggEgg-企业级 Node 开发框架
kitchenKitchen-Sketch 工具集
GalaceanGalacean-互动图形解决方案
xtech蚂蚁体验科技
© Copyright 2025 Ant Group Co., Ltd..备案号:京ICP备15032932号-38

Loading...

注意

阅读本章前,请确保已经阅读了 基础交互 和 获取单元格数据 等章节,并对 布局流程 有所了解。

我们通过鼠标悬停 (hover) 和点击 (click) 可以触发表格单元格的 高亮 和 选中,在一些特定场景下,如果希望主动触发,可以通过内置的 交互 API 来实现。

高亮单元格

高亮的效果和默认的 主题配置 一致,内部状态为 "hover"

const targetCell = s2.facet.getRowCell()[0]
s2.interaction.highlightCell(targetCell)
s2.interaction.getCurrentStateName() // "hover"
preview

高亮子节点

将一组子节点对应的单元格设置为高亮状态。

const targetNodes = s2.facet.getRowNodes()
s2.interaction.highlightNodes(targetNodes)
s2.interaction.highlightNodes(targetNodes, 'hover')
s2.interaction.highlightNodes(targetNodes, 'selected')

选中单元格

选中的效果和默认的 主题配置 一致,内部状态为 "selected"

const targetCell = s2.facet.getRowCell()[0]
s2.interaction.selectCell(targetCell)
s2.interaction.getCurrentStateName() // "selected"
preview

全选

全部的单元格都会被更新为选中的样式,内部状态为 "allSelected"

s2.interaction.selectAll()
s2.interaction.getCurrentStateName() // "allSelected"

获取选中数据

具体请查看 获取单元格数据 - 选中单元格

改变单元格状态

本质上 highlightCell 和 selectCell 内部都是基于 changeCell 实现的语法糖,所以你也可以直接使用 changeCell 实现更细致的状态更新,如 S2 内置的行列头选中也是基于该 API 实现。

import { InteractionStateName } from '@antv/s2'
const targetCell = s2.facet.getRowCell()[0]
s2.interaction.changeCell({
cell: targetCell,
stateName: InteractionStateName.SELECTED,
isMultiSelection: false,
scrollIntoView: false,
})

默认会滚动至可视范围内,可以通过 scrollIntoView 禁用。

也可以直接使用 changeState 直接更新指定单元格的状态

import { InteractionStateName, getCellMeta } from '@antv/s2'
const targetCell = s2.facet.getRowCell()[0]
// 选中
s2.interaction.changeState({
cells: [getCellMeta(targetCell)],
stateName: InteractionStateName.SELECTED,
});
// 取消选中
s2.interaction.changeState({
cells: [],
stateName: InteractionStateName.UNSELECTED,
});

更新单元格

每一个 单元格实例 都有一个 update 方法,调用它可以进行重绘,从而实现单元格的手动更新。

const targetCell = s2.facet.getRowCell()[0]
targetCell.update()

关闭滚动动画

当选中或高亮单元格时,会自动滚动,可以通过 animate: false 关闭动画。

s2.interaction.selectCell(targetCell, {
animate: false
})

触发滚动事件

自动滚动时,默认不会触发内部滚动事件,即 S2Event.GLOBAL_SCROLL, 可以通过 skipScrollEvent: false 禁用。

s2.interaction.selectCell(targetCell, {
skipScrollEvent: false
})