@alisowski/react-resizable-panels

中文文档
0.1.27发布于 2024/08/07MITTypeScriptESM + CJS零依赖近 30 天下载 7863

可调整面板组/放电的响应组件

中文使用文档
文档目录5 节
  1. 如果你喜欢这个项目的话,.. 成为提案人 或 ☕ 给我买杯咖啡
  2. 道具
  3. PanelGroup
  4. Panel
  5. PanelResizeHandle

反应-可逆小板

可调整面板组/放电的响应组件

import { Panel, PanelGroup, PanelResizeHandle } from "react-resizable-panels";

<PanelGroup autoSaveId="example" direction="horizontal">
  <Panel defaultSize={25}>
    <SourcesExplorer />
  </Panel>
  <PanelResizeHandle />
  <Panel>
    <SourceViewer />
  </Panel>
  <PanelResizeHandle />
  <Panel defaultSize={25}>
    <Console />
  </Panel>
</PanelGroup>

如果你喜欢这个项目的话,.. 成为提案人 或 ☕ 给我买杯咖啡

道具

PanelGroup

道具类型说明
autoSaveId?string用于通过自动保存组安排的独特 id localStorage
childrenReactNode任意反应元素
className?string要附加到根元素的类名
direction"horizontal" | "vertical"团体定向
disablePointerEventsDuringResize?boolean = false禁用内部指针事件 Panels 调整大小时 2个
id?string组 ID; 返回到 useId 未提供时
onLayout?(sizes: number[]) => void当组布局改变时调用
storage?PanelGroupStorage自定义存储 API; 默认为 localStorage 1个
style?CSSProperties要附加到根元素的 CSS 样式
tagName?string = "div"根元素的 HTML 元素标签名称

1个: 存储 API 必须定义如下 同步 方法:

  • getItem: (name:string) => string
  • setItem: (name: string, value: string) => void

2个: 这种行为默认被禁用, 因为它可以干扰滚动条样式, 但在边框中有用 Panel 包含一个 <iframe>

PanelGroup 组件还暴露了手动重塑的必需的 API :

方法说明
setLayout(panelSizes: number[])将面板组大小调整到指定的 面板大小 (单位:千美元)[1 - 100, ...]) (中文(简体) ).

Panel

道具类型说明
childrenReactNode任意反应元素
className?string要附加到根元素的类名
collapsedSize?number=0面板应该倒塌到这个大小
collapsible?boolean=false扩大规模后,小组应倒闭 minSize
defaultSize?number面板的初始大小(1-100之间的数值)
id?string面板 id( 组内的独特性); 回到 useId 未提供时
maxSize?number = 100最大允许面板大小(1-100之间的数值);默认为 100
minSize?number = 10面板最小允许大小(数值在1-100之间);默认为 10
onCollapse?(collapsed: boolean) => void当面板倒塌时呼叫; collapsed 反映新状态的布尔参数
onResize?(size: number) => void调整面板大小时调用; size 参数是1-100之间的数值. 1个
order?number集团内小组的顺序;有条件的小组所需
style?CSSProperties要附加到根元素的 CSS 样式
tagName?string = "div"根元素的 HTML 元素标签名称

1个: 如果有的话 Panel 有一个 onResize 调回, 调回 order 应当为所有人提供道具 Panel编号.

Panel 组件还暴露了手动重塑的必需的 API :

方法说明
collapse()如果面板是 collapsible完全崩溃.
expand()如果当前是面板 崩溃,将其扩展至最近的规模.
getCollapsed(): boolean回返 true 如果面板是当前 崩溃 (单位:千美元)size === 0) (中文(简体) ).
getSize(): number返回最近承诺的面板大小的百分比(1 - 100) (中文(简体) ).
resize(percentage: number)将面板大小调整到指定的 百分比 (单位:千美元)1 - 100) (中文(简体) ).

PanelResizeHandle

道具类型说明
children?ReactNode自定义拖曳 UI; 可以是任意反应元素
className?string要附加到根元素的类名
disabled?boolean禁用拖动手柄
id?string调整手柄 ID( 组内的独特性); 返回到 useId 未提供时
onDragging?(isDragging: boolean) => void当组布局改变时调用
style?CSSProperties要附加到根元素的 CSS 样式
tagName?string = "div"根元素的 HTML 元素标签名称

如果你喜欢这个项目, 给我买杯咖啡。 。 。 .

版本与发布记录

@alisowski/react-resizable-panels 共发布 24 个版本,首次发布于 2023/10/14;过去 12 个月发布了 0 个版本。

版本发布日期距今
0.1.27latest2024/08/072 年前
0.1.232024/05/222 年前
0.1.222024/03/222 年前
0.1.212024/03/132 年前
0.1.202024/02/032 年前
0.1.192024/01/252 年前

关于 @alisowski/react-resizable-panels 的常见问题

@alisowski/react-resizable-panels 是什么?

可调整面板组/放电的响应组件

如何安装 @alisowski/react-resizable-panels?

在项目目录运行 npm install @alisowski/react-resizable-panels,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:react(^16.14.0 || ^17.0.0 || ^18.0.0)、react-dom(^16.14.0 || ^17.0.0 || ^18.0.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@alisowski/react-resizable-panels 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@alisowski/react-resizable-panels 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@alisowski/react-resizable-panels 可以商用吗?

@alisowski/react-resizable-panels 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@alisowski/react-resizable-panels 的下载量有多少?

根据 npm 官方下载统计,@alisowski/react-resizable-panels 在 2026/10/06 – 2026/11/04 这 30 天内被下载 7,863 次,日均约 262 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@alisowski/react-resizable-panels 还在维护吗?

最新版本 0.1.27 发布于 2024/08/07(2 年前);至今共发布 24 个版本,其中过去 12 个月发布了 0 个;首次发布于 2023/10/14。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。