Splitter 分割面板
Splitter 在 Rue 里不是一条简单的分隔线,而是一套适合工作台、配置台和双栏内容区的布局行为层。 它使用 Rue Design 当前的柔和卡片气质和 3px 分隔条视觉,同时补上可拖拽、受控尺寸、垂直布局、lazy 拖拽和双击重置这些常用能力。
何时使用
- 需要左右或上下两个工作区同时存在,并允许用户按内容密度自己调节比例。
- 需要把筛选区、编辑区、预览区、日志区这类不同角色的面板拆开,但仍保持同一个页面上下文。
- 需要在布局层提供受控重置和 lazy 拖拽,而不是只做静态栅格分栏。
推荐用法
下面每个 JSX 示例都保持了完整结构,方便直接复制到页面组件里使用。
# Basic workspace split
最基础的双栏写法,默认比例、最小值和最大值都在 Panel 上声明。
Navigation
把目录、资源树或查询条件放在左侧。
Overview
Metrics
Deployments
Editor
右侧保持完整内容区,适合表单、文档或分析结果。
这里是主工作区。拖动中间的 handle,可以把左右空间分配给导航和正文。
# Controlled sizes and reset
受控模式适合和按钮、预设布局、权限开关联动。
Filters
受控模式下,这一栏可以被外部按钮锁定或重置。
等待拖拽
Results
右栏跟随 onResize 返回值同步,适合持久化工作台布局。
受控尺寸:38% / 62%
# Vertical split
上下分栏适合 dashboard 顶部概览 + 底部明细、编辑区 + 日志区这类结构。
Summary
顶部保持关键指标和状态总览。
Success 18
Queued 4
Running 2
Details
底部用来承接更长的列表、表格或日志。
这里可以放明细列表、数据表格、执行日志,或者任何比顶部更“长”的内容。
# Multiple panels and double click reset
多面板场景里,双击分隔柄常常比额外按钮更顺手。
双击任意分隔柄可重置
Sources
左侧资源树或文档大纲。
Editor
中间主编辑区通常需要最大的宽度。
Preview
右侧实时预览或审阅信息。
# Lazy drag for analysis view
lazy 模式更适合重内容布局,拖动过程先预览位置,释放后再真正提交尺寸。
拖拽时只移动 handle,释放后才提交尺寸
Analysis
左侧适合放图表、规则或输入参数。
Strategy setup
Output
右侧接收结果、日志或建议列表。
Insight A
Insight B
Insight C
API
Splitter 的根组件负责布局和交互,所有真正参与计算的子节点都应该是 Splitter.Panel。 如果你在业务里需要把布局状态持久化,优先使用 size+onResize的受控写法;如果只需要默认占比,用defaultSize即可。
| 属性 | 说明 | 类型 | 默认值 |
|---|---|---|---|
orientation / layout / vertical | 控制分割方向;推荐用 orientation,vertical 作为别名保持。 | 'horizontal' | 'vertical' / boolean | 'horizontal' |
lazy | 开启后拖拽期间只移动分隔柄,释放鼠标时才真正提交面板尺寸。 | boolean | false |
onResizeStart / onResize / onResizeEnd | 拖拽开始、拖拽中、拖拽结束的回调,统一返回当前所有面板尺寸。 | (sizes: number[]) => void | - |
onDraggerDoubleClick | 双击分隔柄时触发,适合和“重置布局”联动。 | (index: number) => void | - |
Splitter.Panel size | 受控尺寸,支持像素数值或百分比字符串。 | number | string | - |
Splitter.Panel defaultSize | 非受控初始尺寸,常用于两栏默认占比。 | number | string | - |
Splitter.Panel min / max | 限制面板最小值和最大值,防止拖拽过界。 | number | string | - |
Splitter.Panel resizable | 禁用相邻分隔柄的拖拽能力,但保持布局结构。 | boolean | true |