AntV Infographic
Home
Learn
Reference
Gallery
Icon
Editor
AI
Enterprise

目录

  • Overview
  • cloneElement
  • getElementBounds
  • getElementsBounds
  • getCombinedBounds
  • renderSVG
  • 典型场景
  • Infographic
    • API
    • 配置项
    • 类型定义
    • 导出内容
  • JSX
    • 原语节点
    • 创建布局
    • 工具函数
  • 设计资产
    • 内置结构
    • 内置数据项
    • 内置模版
    • 内置主题
    • 内置色板
    • 内置图案
    • 内置组件
API Reference
JSX

工具函数

AntV Infographic 提供了一些工具函数,方便在布局或自定义组件中复用几何计算与节点操作。

cloneElement

浅拷贝一个 JSX 节点并覆写部分属性,常用于布局中调整子元素的 x/y 或样式。

TS
function cloneElement( element: JSXElement, props?: Partial<typeof element.props> ): JSXElement;
参数类型说明
elementJSXElement要克隆的节点。
propsRecord<string, any>要覆盖或追加的属性,将与原有属性浅合并。

返回值:新的 JSXElement,原对象不变。

getElementBounds

计算单个 JSX 节点的包围盒。支持原语节点、布局组件、函数组件以及数组。

TS
function getElementBounds(node?: JSXNode): Bounds; // Bounds = { x: number; y: number; width: number; height: number }
参数类型说明
nodeJSXNode | undefined任意 JSX 节点或节点数组。

返回值:Bounds。若无法推导尺寸(无子元素且无显式宽高),返回 width=0、height=0。

行为要点

  • 布局组件(由 createLayout 生成)会先执行布局函数再计算尺寸。
  • 函数组件优先使用显式的 width/height;若缺省,则递归测量其渲染结果。
  • 传入数组时会递归展开并合并子节点的包围盒。

getElementsBounds

计算一组节点的整体包围盒,内部会为每个节点调用 getElementBounds 后求并集。

TS
function getElementsBounds(elements: JSXNode): Bounds;
参数类型说明
elementsJSXNode一个或多个节点(数组)。

返回值:Bounds。若数组为空或无有效节点,返回全 0。

getCombinedBounds

纯几何工具,将多个 Bounds 合并为最小包围盒,不处理节点。

TS
function getCombinedBounds(list?: Bounds[] | null): Bounds;
参数类型说明
listBounds[] | null | undefined要合并的边界集合。

返回值:Bounds。传入空值时返回全 0。

renderSVG

将 JSX 节点渲染为 SVG 字符串,方便在网页或其他环境中使用。

TS
function renderSVG(node: JSXNode, options?: object): string;
参数类型说明
nodeJSXNode要渲染的 JSX 节点或节点数组。
optionsobject | undefinedSVG 容器属性

返回值:SVG 字符串。

典型场景

  • 自定义布局:用 getElementBounds 获取子节点尺寸,cloneElement 写入新的 x/y。
  • 组件自动撑开:缺省宽高时,用 getElementsBounds 得到子内容的整体尺寸并回填自身 width/height。
  • 组合计算:已有预计算的 Bounds 列表时,用 getCombinedBounds 合并,避免重复遍历节点树。
Previous创建布局
Next设计资产

AntV Infographic
Copyright © Ant Group Co.
Docs
Quick Start
Core Concepts
Custom Design
Infographic Theory
API Reference
JSX
API
Design Assets
More
More Examples
AI Generated Infographics
GitHub
Contribute
Friendly Links
AntV
G2
G6
L7
TS
function cloneElement(
element: JSXElement,
props?: Partial<typeof element.props>
): JSXElement;
TS
function getElementBounds(node?: JSXNode): Bounds;
// Bounds = { x: number; y: number; width: number; height: number }
TS
function getElementsBounds(elements: JSXNode): Bounds;
TS
function getCombinedBounds(list?: Bounds[] | null): Bounds;
TS
function renderSVG(node: JSXNode, options?: object): string;