Back to Ant Design

Drawer

components/drawer/index.zh-CN.md

6.3.76.7 KB
Original Source

何时使用 {#when-to-use}

抽屉从父窗体边缘滑入,覆盖住部分父窗体内容。用户在抽屉内操作时不必离开当前任务,操作完成后,可以平滑地回到原任务。

  • 当需要一个附加的面板来控制父窗体内容,这个面板在需要时呼出。比如,控制界面展示样式,往界面中添加内容。
  • 当需要在当前任务流中插入临时任务,创建或预览附加内容。比如展示协议条款,创建子对象。

开发者注意事项:

5.17.0 版本,我们提供了 loading 属性,内置 Spin 组件作为加载状态,但是自 5.18.0 版本开始,我们修复了设计失误,将内置的 Spin 组件替换成了 Skeleton 组件,同时收窄了 loading api 的类型范围,只能接收 boolean 类型。

代码演示 {#examples}

<!-- prettier-ignore -->

<code src="./demo/basic-right.tsx">基础抽屉</code> <code src="./demo/placement.tsx">自定义位置</code> <code src="./demo/resizable.tsx" version="6.0.0">可调整大小</code> <code src="./demo/loading.tsx" version="5.17.0">加载中</code> <code src="./demo/extra.tsx">额外操作</code> <code src="./demo/render-in-current.tsx">渲染在当前 DOM</code> <code src="./demo/form-in-drawer.tsx">抽屉表单</code> <code src="./demo/user-profile.tsx">信息预览抽屉</code> <code src="./demo/multi-level-drawer.tsx">多层抽屉</code> <code src="./demo/size.tsx">预设宽度</code> <code src="./demo/mask.tsx">遮罩</code> <code src="./demo/closable-placement.tsx" version="5.28.0">关闭按钮位置</code> <code src="./demo/style-class.tsx" version="6.0.0">自定义语义结构的样式和类</code> <code src="./demo/config-provider.tsx" debug>ConfigProvider</code> <code src="./demo/no-mask.tsx" debug>无遮罩</code> <code src="./demo/render-panel.tsx" debug>_InternalPanelDoNotUseOrYouWillBeFired</code> <code src="./demo/scroll-debug.tsx" debug>滚动锁定调试</code> <code src="./demo/component-token.tsx" debug>组件 Token</code>

API

通用属性参考:通用属性

参数说明类型默认值版本
afterOpenChange切换抽屉时动画结束后的回调function(open)-
bodyStyle抽屉内容区域样式,请使用 styles.body 替代CSSProperties--
classNameDrawer 容器外层 className 设置,如果需要设置最外层,请使用 rootClassNamestring-
classNames用于自定义 Drawer 组件内部各语义化结构的 class,支持对象或函数Record<SemanticDOM, string> | (info: { props })=> Record<SemanticDOM, string>-
closable是否显示关闭按钮。可通过 placement 配置其位置boolean | { closeIcon?: React.ReactNode; disabled?: boolean; placement?: 'start' | 'end' }trueplacement: 5.28.0
contentWrapperStyle抽屉包裹层样式,请使用 styles.wrapper 替代CSSProperties--
destroyOnClose关闭时销毁 Drawer 里的子元素booleanfalse
destroyInactivePanel关闭时销毁 Drawer 里的子元素,请使用 destroyOnHidden 替代booleanfalse-
destroyOnHidden关闭时销毁 Drawer 里的子元素booleanfalse5.25.0
drawerStyle抽屉面板样式,请使用 styles.section 替代CSSProperties--
extra抽屉右上角的操作区域ReactNode-4.17.0
footer抽屉的页脚ReactNode-
footerStyle抽屉底部样式,请使用 styles.footer 替代CSSProperties--
forceRender预渲染 Drawer 内元素booleanfalse
focusable抽屉内焦点管理的配置{ trap?: boolean, focusTriggerAfterClose?: boolean }-6.2.0
getContainer指定 Drawer 挂载的节点,并在容器内展现false 为挂载在当前位置HTMLElement | () => HTMLElement | Selectors | falsebody
headerStyle抽屉头部的样式,请使用 styles.header 替换CSSProperties-
height高度,在 placementtopbottom 时使用,请使用 size 替换string | number378
keyboard是否支持键盘 esc 关闭booleantrue
loading显示骨架屏booleanfalse5.17.0
mask遮罩效果boolean | { enabled?: boolean, blur?: boolean, closable?: boolean }truemask.closable: 6.3.0
maskClosable点击蒙层是否允许关闭booleantrue
maskStyle抽屉遮罩样式,请使用 styles.mask 替代CSSProperties--
maxSize可拖拽的最大尺寸(宽度或高度,取决于 placementnumber-6.0.0
openDrawer 是否可见booleanfalse
placement抽屉的方向top | right | bottom | leftright
push用于设置多层 Drawer 的推动行为boolean | { distance: string | number }{ distance: 180 }4.5.0+
resizable是否启用拖拽改变尺寸boolean | ResizableConfig-boolean: 6.1.0
rootStyle可用于设置 Drawer 最外层容器的样式,和 style 的区别是作用节点包括 maskCSSProperties-
size预设抽屉宽度(或高度),default 378px 和 large 736px,或自定义数字'default' | 'large' | number | string'default'4.17.0, string: 6.2.0
styleDrawer 面板的样式,如需仅配置 body 部分,请使用 styles.bodyCSSProperties-
styles用于自定义 Drawer 组件内部各语义化结构的行内 style,支持对象或函数Record<SemanticDOM, CSSProperties> | (info: { props })=> Record<SemanticDOM, CSSProperties>-
title标题ReactNode-
width宽度,请使用 size 替换string | number378
zIndex设置 Drawer 的 z-indexnumber1000
onClose点击遮罩层或左上角叉或取消按钮的回调function(e)-
drawerRender自定义渲染抽屉(node: ReactNode) => ReactNode-5.18.0

ResizableConfig

参数说明类型默认值版本
onResizeStart开始拖拽调整大小时的回调() => void-6.0.0
onResize拖拽调整大小时的回调(size: number) => void-6.0.0
onResizeEnd结束拖拽调整大小时的回调() => void-6.0.0

Semantic DOM {#semantic-dom}

<code src="./demo/_semantic.tsx" simplify="true"></code>

主题变量(Design Token){#design-token}

<ComponentTokenTable component="Drawer"></ComponentTokenTable>