Skip to content

useResizable

@astryxdesign/core v0.7.1 · useResizable

参数 ​

名称类型默认值说明
defaultSizeResizableSize | string250初始尺寸。数字、精确的 "Npx"、以及 pixel(value) 都按像素算。精确的 "N%" 不带额外像素限制。percent(value, { min: pixel(value) }) 或 percent(value, { max: pixel(value) }) 会再加上一个像素下限或上限。百分比只解析一次成像素:给了 containerRef 就按它算,否则按视口算,之后不再跟着基准变化。
minSizeResizableSize | string50最小尺寸。数字、精确的 "Npx"、pixel(value) 仍按像素;精确的 "N%" 不带额外像素限制;percent() 会加且只加一个限制。百分比下限在基准变化时会重新解析,并把当前像素值夹回范围内。
maxSizeResizableSize | stringInfinity最大尺寸。数字、精确的 "Npx"、pixel(value) 仍按像素;精确的 "N%" 不带额外像素限制;percent() 会加且只加一个限制。百分比上限在基准变化时会重新解析,并把当前像素值夹回范围内。
containerRefRef<HTMLElement | null>—百分比按谁算。这个 ref 由调用方提供,hook 不会自己去猜。不传就按视口算。ref 指的元素以后可以换,基准跟着换。目标元素还没完成布局时(没挂载、display:none、已脱离文档),百分比先按临时的 1200px 算,也不会写进持久化。
direction'horizontal' | 'vertical''horizontal'这个区域沿哪个方向改尺寸。它决定百分比的基准取容器的行内还是块方向内容盒尺寸,也必须和交给 ResizeHandle 的方向一致。
collapsiblebooleanfalse拖到收起阈值以下时,是否把区域收成 0。
collapsedSizenumber40可收起的区域低于这个像素阈值就吸到 0。
snapsnumber[][]尺寸只会停在这些像素点上。离两个点一样远时,留在更靠前的那个。
autoSaveIdstring—把尺寸和收起状态存进 localStorage 的键名,实际键名前面带 astryx-resizable:。
defaultIsCollapsedbooleanfalse初始收起状态(非受控)。localStorage 里有记录时以记录为准。
isCollapsedboolean—受控的收起状态。传了它,collapse()、expand() 和拖过阈值都不再自己改状态,而是通过 onCollapseChange 报给你。
onSizeChange(size: number) => void—每次拖动、调整或收起之后,带上解析好的像素尺寸调用。
onCollapseChange(isCollapsed: boolean) => void—收起状态每变一次调用一次,拖动或代码触发都算。

传 regions 走多区域模式时,参数是 regions(键到 ResizableRegionConfig 的映射)加上 direction、containerRef、autoSaveId。每个区域除了上面这些尺寸、收起和吸附字段,还能给 shrinkOrder:容器装不下时,数字小的先让出空间。

返回值 ​

名称类型说明
sizenumber当前尺寸,单位像素。响应式。
isCollapsedboolean区域当前是否已收起。响应式。
collapse() => void用代码把区域收起来。
expand() => void从收起状态展开。
resize(size: number) => void调到指定的像素尺寸。
propsResizableProps展开给可调整的组件,或者交给 ResizeHandle。

传 regions 时返回 Record<string, ResizableRegion>:每个键对应一个形状相同的对象。