本文档将引导你从 G6 4.x
版本升级到 5.x
版本。如果你使用的是 3.x
版本,请先升级到 4.x
版本。
5.x
版本,并移除 4.x
版本依赖。新版本的数据格式有所变化,具体如下:
nodes
edges
combos
中所有样式属性都需要放在 style
中,data
中存放数据属性:// 4.xconst data = {nodes: [{ id: 'node1', label: 'node1', size: 20 },{ id: 'node2', label: 'node2', size: 20 },],edges: [{ source: 'node1', target: 'node2' }],};// 5.xconst data = {nodes: [// label 为非样式属性,放在 data 中,可在样式映射函数中访问// size 为样式属性,放在 style 中{ id: 'node1', data: { label: 'node1' }, style: { size: 20 } },{ id: 'node2', data: { label: 'node2' }, style: { size: 20 } },],edges: [{ source: 'node1', target: 'node2' }],};
由于我们重新设计实现了元素,新的元素配置项请参考相应文档进行修改:
type
属性:{nodes: [// 指定节点类型为 rect{ id: 'node1', type: 'rect' },];}
变更 fitView / fitCenter / fitViewPadding
fitView
和 fitCenter
配置项已经合并为 autoFit
fitView
,可以配置为 autoFit: 'view'
fitCenter
,可以配置为 autoFit: 'center'
autoFit: {type: 'view',options: {// ...}}
fitViewPadding
已变更为 padding
移除 linkCenter
5.x 的边连接机制会按照如下顺序依次尝试连接到节点/Combo:
移除 groupByTypes
移除 autoPaint
请手动调用 render
或 draw
方法进行绘制。
变更 modes
5.x 已经移除交互模式,你可以通过设置 behaviors
来切换当前启用的交互行为。
// 4.x{modes: {default: ['drag-canvas', 'zoom-canvas'],preview: ['drag-canvas'],},}graph.setMode('preview');
// 5.x{behaviors: ['drag-canvas', 'zoom-canvas'],}graph.setBehaviors(['drag-canvas']);
变更 defaultNode / defaultEdge / defaultCombo
元素样式已移至 [element].style
中,如 defaultNode
变更为 node.style
:
// 4.x{defaultNode: {size: 20,fill: 'red',}}// 5.x{node: {style: {size: 20,fill: 'red',}}}
变更 nodeStateStyles / edgeStateStyles / comboStateStyle
元素状态样式已移至 [element].state
中,如 nodeStateStyles
变更为 node.stateStyles
:
// 4.x{nodeStateStyles: {selected: {fill: 'red',}}}// 5.x{node: {state: {selected: {fill: 'red',}}}}
变更 animate / animateCfg
animate
配置项已变更为 animation
animate
和 animateCfg
已合并为 animation
// 4.x{animate: true,}// 5.x{animation: true,}{animation: {duration: 500,easing: 'easeLinear',}}
变更 minZoom / maxZoom
minZoom
和 maxZoom
已合并为 zoomRange
// 4.x{minZoom: 0.5,maxZoom: 2,}// 5.x{zoomRange: [0.5, 2],}
变更 renderer
G6 5.x 支持多层画布,默认使用 canvas
渲染。
renderer 不再支持字符串类型,变更为回调函数:
// 4.xvar options = {renderer: 'svg',};// 5.ximport { Renderer } from '@antv/g-svg';{renderer: () => new Renderer(),}
移除 enabledStack / maxStep
5.x 已移除内置撤销重做功能,相关能力请使用插件实现。
变更 data / save / read / changeData
5.x 提供了全新的数据 API,详见 数据 API。
data
changeData
方法使用 5.x setData
替代save
方法使用 5.x getData
替代read
方法使用 5.x setData
+ render
替代变更 get / set
若要访问 Graph options,请使用 getOptions
或者 getXxx
API,例如 getZoomRange
getBehaviors
等。 set
同理。
变更 getContainer
暂不支持直接获取容器的 API,但可以通过 graph.getCanvas().getContainer()
获取。
绝大部分情况下,你都不需要直接操作容器。
移除 getGroup
变更 getMinZoom / getMaxZoom
使用 getZoomRange
获取。
变更 setMinZoom / setMaxZoom
使用 setZoomRange
方法设置。
变更 getWidth / getHeight
使用 getSize
获取。
变更 changeSize
使用 setSize
设置。
变更 zoom
变更为 zoomBy
。
变更 translate
变更为 translateBy
。
变更 moveTo
变更为 translateTo
。
变更 focusItem
变更为 focusElement
。
移除 addItem / updateItem / removeItem
通过 addData
/ updateData
/ removeData
方法操作数据来添加或删除元素。
移除 refreshItem
移除 refreshPositions
移除 updateCombo
移除 updateCombos
移除 updateComboTree
变更 node / edge / combo
使用 setNode
/ setEdge
/ setCombo
方法替代。
变更 showItem / hideItem
使用 setElementVisibility
方法替代。
移除 getNodes / getEdges / getCombos / getComboChildren /getNeighbors /find /findById / findAll /findAllByState
5.x 不支持直接获取元素实例。
getData
getNodeData
getEdgeData
getComboData
方法,支持传入元素 id 进行查找。getChildrenData
方法。getNeighborNodesData
方法。getElementDataByState
。变更 collapseCombo / expandCombo
使用 collapseElement
/ expandElement
方法替代。
移除 collapseExpandCombo
移除 createCombo
通过 addData
/ addComboData
方法添加 Combo。
移除 uncombo
通过 removeData
/ removeComboData
方法移除 Combo。
变更 setItemState
使用 setElementState
方法替代。
移除 clearItemStates
graph.setElementState(id, [])
graph.setElementState({ id1: [], id2: [] })
移除 priorityState
setElementState
时状态数组中靠后的状态优先级更高。
移除 setMode
使用 setBehaviors
来设置当前交互。
移除 setCurrentMode
变更 layout
不支持参数,如需配置布局,请使用 setLayout
。
变更 updateLayout
变更为 setLayout
。
移除 destroyLayout
变更 addBehaviors / removeBehaviors
使用 setBehaviors
替代。
移除 createHull / getHulls / removeHull / removeHulls
Hull
需在 plugins
中配置多个 hull
插件,如:{plugins: ['hull', 'hull'],};
Hull
的获取、更新、移除操作通过 setPlugins
, updatePlugin
实现。暂未提供 getNodeDegree
暂未提供 getShortestPathMatrix
暂未提供 getAdjMatrix
移除 pushStack / getUndoStack / getRedoStack / getStackData / clearStack
所有撤销重做相关 API 请获取到对应插件后调用 API,例:
// 'history' 为使用插件时配置的 keyconst history = graph.getPluginInstance('history');history.redo();
移除 positionsAnimate / stopAnimate / isAnimating
动画相关信息通过事件抛出:
beforeanimate
afteranimate
graph.on('beforeanimate', (event) => {event.animation.stop();});
变更 getPointByClient / getClientByPoint / getPointByCanvas / getCanvasByPoint / getGraphCenterPoint / getViewPortCenterPoint
G6 5.x 采用了与 4.x 不同的坐标系,详见 坐标系。
移除 setTextWaterMarker / setImageWaterMarker
要使用水印功能,请参考 水印插件。
变更 toFullDataURL
使用 toDataURL
替代,指定参数为:mode: 'overall'
graph.toDataURL({ mode: 'overall' });
移除 downloadFullImage / downloadImage
仅提供导出为 DataURL
的能力,如需下载图片,请参考如下实例代码:
async function downloadImage() {const dataURL = await graph.toDataURL();const [head, content] = dataURL.split(',');const contentType = head.match(/:(.*?);/)![1];const bstr = atob(content);let length = bstr.length;const u8arr = new Uint8Array(length);while (length--) {u8arr[length] = bstr.charCodeAt(length);}const blob = new Blob([u8arr], { type: contentType });const url = URL.createObjectURL(blob);const a = document.createElement('a');a.href = url;a.download = 'graph.png';a.click();}
移除 clear
使用 setData
+ draw
清空数据和画布。
与 G6 4.x 不同,G6 5.x 使用的统一的扩展注册函数(register),你可以参考 注册扩展 来注册 G6 扩展。
下列 G6 4.x 的注册函数已经废除:
与 G6 4.x 相比,G6 5.x 的事件但存下如下差异:
mouse
和 touch
事件,统一使用 pointer
事件before/after
+ 对象/属性
+ 操作
,例如:beforeelementcreate
表示在创建元素前触发beforeelementupdate
和 afterelementupdate
获取:
完整的事件列表请参考 事件。