简介
Tiling Layout 是一个 React 布局库。把容器交给它,你会得到一组可以分割、合并、停靠、调整大小的区域,就像 VS Code 的编辑器分组那样。每个区域可以承载任意的 React 内容。
在布局之外,它还提供一层与渲染无关的数据管理:布局状态、每个区域里的实例状态、跨区域共享的数据,都收敛成一份可序列化的快照。撤销重做、持久化、多工作区,都建立在这份快照上。
为什么布局要做成数据
多数布局组件把状态藏在内部,你只能通过组件 API 间接操作。这个库反着来:布局就是一组矩形区域——每块在哪里、多大,全是一份纯数据——配合一小组纯函数(split、joinAreas、snapCoord)对它做变换;分界线由相邻关系即时推导,不存储。渲染器 LayoutViewDom 只是这份数据的其中一个视图,把比例坐标换算成百分比定位到 DOM 上。
这样设计带来的几个直接结果:
- 布局可以被序列化、存档、导出成 JSON,再原样恢复,区域 id 在恢复后保持不变。
- 你可以在代码里做和鼠标手势一模一样的变换,比如实现预设布局模板。
- 布局操作和历史记录(undo/redo)不需要渲染器参与,换一套渲染层也能复用。