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...

@antv/s2-react-components

S2 提供开箱即用的维度切换组件 <Switcher/>, 借助它,你可以非常方便的实现交互式行列切换,以及维度隐藏的功能。

preview

快速上手

点击查看 Switcher 维度配置
const switcherFields = {
rows: {
items: [{ id: "province" }, { id: "city" }],
allowEmpty: false,
},
columns: {
items: [{ id: "type" }],
},
values: {
selectable: true,
items: [{ id: "price" }, { id: "cost" }],
},
};
import React from "react";
import { Switcher } from '@antv/s2-react-components';
import '@antv/s2-react-components/dist/s2-react-components.min.css';
const onSubmit = (result) => {
console.log("result:", result);
};
const App = () => {
return (
<Switcher {...switcherFields} onSubmit={onSubmit} />,
)
}

配置解释

维度配置

提示

Switcher 可接收三种类型的维度配置,分别是 rows,columns 和 values, 它们的类型皆为 SwitcherField。

其中 rows 和 columns 两个维度可以相互拖拽到彼此的配置框中,而 values 只能在自己的配置框中更改字段顺序。

通过传入 sheetType 以及维度配置,Switcher 的展示形态也会有所不同:

一种维度(主要用于明细表) 三种维度(主要用于透视表)
one-dimension three-dimensions

可选中

  • 每个维度默认只能进行拖拽排序, 如果你希望能控制其字段的显隐,可以设置 selectable: true, 该属性用于开启字段的 checkbox :
const field = {
selectable: true,
items: [
/*...*/
],
};

展开子项

  • 如果维度中的每一个字段项还存在关联子项,可以设置 expandable:true, 该属性用于控制子项是否被展开,也可以进一步设置 expandText 定制展开 checkbox 的提示文字:
const field = {
expandable: true,
expandText: "展开同环比", // 默认:展开子项
items: [
/*...*/
],
};

允许为空

  • 如果当前维度在移动交互中需要至少保留一个子项不能被拖拽出去,可以设置 allowEmpty:false, 该属性用于控制维度是否可以将全部子项拖出到其他维度:
const field = {
allowEmpty: false, // 默认:true
items: [
/*...*/
],
};

allowEmpty

提交修改

Switcher 组件在弹窗关闭后会触发 onSubmit 回调,且此回调会接收一个 SwitcherResult 类型的参数,你可以通过该回调拿到修改后的结果。

所有结果会按维度分组,并且每一组字段会扁平化后按按顺序排序,你可以通过以下示例查看详细的结果数据类型。

注意

出于减少内部状态过时的考虑,Switcher 组件内部并不会持久化操作后状态。也就是说在每次弹窗关闭后,Switcher 内部状态会清空,再次打开时还是以组件 props 中的各个维度配置为准。

定制化

  • 如果 Switcher 组件内置的触发按钮不满足你的需求,可通过 title 和 icon 定制化触发按钮,也可以自定义 children
import { SwapOutlined } from '@ant-design/icons';
<Switcher title="维度切换" icon={<SwapOutlined/> }/>
<Switcher>
<Button size="small">自定义入口</Button>
</Switcher>
  • Switcher 组件也提供了 resetText 属性用于定义重置按钮的问题
preview
  • Switcher 组件的弹出层基于 antd 的 Popover 开发,支持透传 Popover 配置项, 进行弹出层的自定义,比如 触发方式, 箭头指向, 卡片弹出方向 等
<Switcher popover={{ arrowPointAtCenter: true }} />

🎨 Switcher 组件详细的配置参考 Switcher Props 文档。

示例

结合透视表使用

提示

  • 行列值可以相互移动
  • 指标值可以控制显隐

结合明细表使用

提示

  • 列头可以控制显隐
  • 表格列头对应出现展开图标

​📊 查看更多 维度切换示例。