JGuang

图片

Image · Arco Design

交互预览
npm install @arco-design/web-react@2.66.18

图片 Image

展示和预览图片。

安装

npm install @arco-design/web-react@2.66.18

在入口引入 @arco-design/web-react/dist/css/arco.css,用 ConfigProvider 设置语言。React 19 项目还需在入口最先引入 @arco-design/web-react/es/_util/react-19-adapter,否则 Message、Modal 等命令式 API 无法渲染。

示例

  • 基础用法:需要查看图片的时候,简单的设置 src 属性,就能获得一个有预览图片功能的组件。
  • 显示 Caption:通过设置 title 和 description 可以将图片的标题和描述显示在图片内部或者底部,显示的位置通过 footerPosition 控制。
  • 额外操作:额外操作通过 actions 设置,默认情况下水平排列,如果您的操作按钮比较多,我们也提供了 simple 模式将按钮收入一个下拉框中,但是需要注意的是在 simple 模式下,描述将不显示。
  • 错误状态:当加载图片失败的时候显示的内容。
  • 加载状态:默认情况下,加载效果是不显示的,可通过设置 loader=true 显示默认加载效果。如果默认加载效果不符合需求。还可以通过 loaderClassName 自行设置加载样式。
  • 渐进加载:大图可通过给 loader 传递一个小一些的图片,让其在原图未被加载成功时显示,以此来模拟渐进加载。
  • 自定义预览控制条:通过设置 actionsLayout 可以调整预览控制条中功能按钮的顺序,同时可以过滤功能按钮,只有在 actionsLayout 中的按钮才会出现。其中 extra 代表 actions 中的按钮,而且 actions 中的 key 也支持单独拿出来排序。
  • 多图预览:用 <Image.PreviewGroup> 包裹 <Image> 组件即可进行多图预览。
  • 单独使用预览组件:Image.Preview 可单独使用,需要配置 src,并控制 visible。
  • 单独使用多图预览组件:Image.PreviewGroup 可单独使用,需通过 visible 和 onVisibleChange 控制显隐。在图片的展示上分为两种场景,一是通过 defaultCurrent 指定第一张展示的图片;二是通过 current 和 onChange 以受控的方式控制当前显示的是第几张图片。
  • 挂载节点:可以通过 getPopupContainer 指定预览挂载的父级节点。
  • 懒加载:设置 lazyload 可以开启懒加载,当图片出现在视口才会进行加载。lazyload 属性基于 IntersectionObserver API 实现

示例来自 Arco Design 官方仓库(MIT),固定在 npm 2.66.18 对应的提交;部分示例使用在线图片或上传地址,预览中网络请求被禁用。

API

<div class="image-demo-props">

Image

参数名描述类型默认值版本
preview是否开启预览booleantrue-
simple是否开启简洁模式boolean--
index使用 Image.PreviewGroup包裹时的预览索引,一般不用指定,当多图预览顺序出现问题时,可手动指定当前 image 的预览顺序number-2.23.0
description描述string--
src图片获取地址string--
title标题string--
footerPosition底部显示的位置'inner' | 'outer'inner-
errorerror 状态下显示的内容ReactNode--
loader加载过渡效果,为 true 显示默认加载效果boolean | ReactNode--
actions额外操作ReactNode[]--
className节点类名string | string[]--
height图片显示高度string | number--
lazyload开启懒加载 Intersection_Observerboolean | IntersectionObserverInit-2.47.0
loaderClassNameloader 的样式,将覆盖默认过渡效果string | string[]--
onError图片加载失败时触发(ev: SyntheticEvent<HTMLImageElement>) => void--
onLoad图片加载完成时触发(ev: SyntheticEvent<HTMLImageElement>) => void--
previewProps预览的配置项 (所有选项都是可选的)ImagePreviewPropsPartialImagePreviewProps--
style节点样式CSSProperties--
width图片显示宽度string | number--

Image.Preview

参数名描述类型默认值版本
closable是否显示关闭按钮booleantrue2.16.0
defaultVisible默认是否可见,非受控boolean--
escToExit按 ESC 键关闭预览booleantrue2.24.0
maskClosable点击 mask 是否触发关闭booleantrue-
resetTranslate开启位置修正booleantrue2.61.0
visible是否可见,受控属性boolean--
breakPoint触发 toolbar 切换为 simple 模式的宽度number316-
src图片获取地址, 在 Image 中默认是 Image 的 srcstring (必填)--
imgAttributes图片属性,透传至预览弹窗中的 img 标签上Omit<ImgHTMLAttributes<HTMLImageElement>, 'src'>-2.39.0
extra自定义图片预览区域的额外节点ReactNode-2.53.0
actions额外操作,ImagePreviewActionPropsImagePreviewActionProps[]--
actionsLayout控制条的布局string[]['fullScreen', 'rotateRight', 'rotateLeft', 'zoomIn', 'zoomOut', 'originalSize', 'extra']-
className节点类名string | string[]--
scales在预览缩放时会使用当前数组中的缩放百分比。若不包含 100%,则会自动添加在最相邻的位置。number[][25, 33, 50, 67, 75, 80, 90, 100, 110, 125, 150, 175, 200, 250, 300, 400, 500];2.30.0
style节点样式CSSProperties--
getPopupContainer弹出层挂载的节点() => HTMLElement() => document.body2.16.0
imageRender自定义 IMG 元素的渲染(originalNode: ReactElement) => ReactNode-2.58.0
onVisibleChange切换可见状态触发的事件(visible: boolean, preVisible: boolean) => void--

Image.PreviewGroup

从 v2.14.0 开始支持

参数名描述类型默认值版本
closable是否显示关闭按钮booleantrue2.16.0
defaultVisible默认是否可见,非受控boolean--
escToExit按 ESC 键关闭预览booleantrue2.24.0
forceRender是否渲染图片列表,用于提前加载图片boolean-2.58.0
infinite是否无限循环boolean--
maskClosable点击 mask 是否触发关闭booleantrue-
resetTranslate开启位置修正booleantrue2.61.0
visible是否可见,受控属性boolean--
breakPoint触发 toolbar 切换为 simple 模式的宽度number316-
current当前展示的图片的下标 (受控属性)number--
defaultCurrent第一张展示的图片的下标number--
imgAttributes图片属性,透传至预览弹窗中的 img 标签上Omit<ImgHTMLAttributes<HTMLImageElement>, 'src'>-2.39.0
extra自定义图片预览区域的额外节点ReactNode-2.53.0
actions额外操作,ImagePreviewActionPropsImagePreviewActionProps[]--
actionsLayout控制条的布局string[]['fullScreen', 'rotateRight', 'rotateLeft', 'zoomIn', 'zoomOut', 'originalSize', 'extra']-
className节点类名string | string[]--
scales在预览缩放时会使用当前数组中的缩放百分比。若不包含 100%,则会自动添加在最相邻的位置。number[][25, 33, 50, 67, 75, 80, 90, 100, 110, 125, 150, 175, 200, 250, 300, 400, 500];2.30.0
srcList图片列表 (设置了本属性之后,将不再收集 Image 子组件的图片信息)string[]--
style节点样式CSSProperties--
getPopupContainer弹出层挂载的节点() => HTMLElement() => document.body2.16.0
imageRender自定义 IMG 元素的渲染(originalNode: ReactElement) => ReactNode-2.58.0
onChange切换图片触发的事件(index: number) => void--
onVisibleChange切换可见状态触发的事件(visible: boolean, preVisible: boolean) => void--

ImagePreviewActionProps

<Image.Preview> 中类型 ImagePreviewActionProps 详细参数。

参数名描述类型默认值
disabled是否禁用boolean-
key唯一标识string (必填)-
name名称string-
content内容ReactNode (必填)-
className节点类名string | string[]-
style节点样式CSSProperties-
getContainer因为 content 只能定义内容,所以提供这个函数用于支持自定义外围元素,需要注意的是设置了 getContainer, 显示 name 的 Tooltip 将失效。(actionElement: ReactNode) => ReactNode-
</div>