useResizable
@astryxdesign/core v0.7.1 · useResizable
参数
| 名称 | 类型 | 默认值 | 说明 |
|---|---|---|---|
defaultSize | ResizableSize | string | 250 | 初始尺寸。数字、精确的 "Npx"、以及 pixel(value) 都按像素算。精确的 "N%" 不带额外像素限制。percent(value, { min: pixel(value) }) 或 percent(value, { max: pixel(value) }) 会再加上一个像素下限或上限。百分比只解析一次成像素:给了 containerRef 就按它算,否则按视口算,之后不再跟着基准变化。 |
minSize | ResizableSize | string | 50 | 最小尺寸。数字、精确的 "Npx"、pixel(value) 仍按像素;精确的 "N%" 不带额外像素限制;percent() 会加且只加一个限制。百分比下限在基准变化时会重新解析,并把当前像素值夹回范围内。 |
maxSize | ResizableSize | string | Infinity | 最大尺寸。数字、精确的 "Npx"、pixel(value) 仍按像素;精确的 "N%" 不带额外像素限制;percent() 会加且只加一个限制。百分比上限在基准变化时会重新解析,并把当前像素值夹回范围内。 |
containerRef | Ref<HTMLElement | null> | — | 百分比按谁算。这个 ref 由调用方提供,hook 不会自己去猜。不传就按视口算。ref 指的元素以后可以换,基准跟着换。目标元素还没完成布局时(没挂载、display:none、已脱离文档),百分比先按临时的 1200px 算,也不会写进持久化。 |
direction | 'horizontal' | 'vertical' | 'horizontal' | 这个区域沿哪个方向改尺寸。它决定百分比的基准取容器的行内还是块方向内容盒尺寸,也必须和交给 ResizeHandle 的方向一致。 |
collapsible | boolean | false | 拖到收起阈值以下时,是否把区域收成 0。 |
collapsedSize | number | 40 | 可收起的区域低于这个像素阈值就吸到 0。 |
snaps | number[] | [] | 尺寸只会停在这些像素点上。离两个点一样远时,留在更靠前的那个。 |
autoSaveId | string | — | 把尺寸和收起状态存进 localStorage 的键名,实际键名前面带 astryx-resizable:。 |
defaultIsCollapsed | boolean | false | 初始收起状态(非受控)。localStorage 里有记录时以记录为准。 |
isCollapsed | boolean | — | 受控的收起状态。传了它,collapse()、expand() 和拖过阈值都不再自己改状态,而是通过 onCollapseChange 报给你。 |
onSizeChange | (size: number) => void | — | 每次拖动、调整或收起之后,带上解析好的像素尺寸调用。 |
onCollapseChange | (isCollapsed: boolean) => void | — | 收起状态每变一次调用一次,拖动或代码触发都算。 |
传 regions 走多区域模式时,参数是 regions(键到 ResizableRegionConfig 的映射)加上 direction、containerRef、autoSaveId。每个区域除了上面这些尺寸、收起和吸附字段,还能给 shrinkOrder:容器装不下时,数字小的先让出空间。
返回值
| 名称 | 类型 | 说明 |
|---|---|---|
size | number | 当前尺寸,单位像素。响应式。 |
isCollapsed | boolean | 区域当前是否已收起。响应式。 |
collapse | () => void | 用代码把区域收起来。 |
expand | () => void | 从收起状态展开。 |
resize | (size: number) => void | 调到指定的像素尺寸。 |
props | ResizableProps | 展开给可调整的组件,或者交给 ResizeHandle。 |
传 regions 时返回 Record<string, ResizableRegion>:每个键对应一个形状相同的对象。