React下使用antv/g6實現(xiàn)樹圖/流程圖

1、需求

根據(jù)后臺數(shù)據(jù)實現(xiàn)類似下圖效果:因為實際節(jié)點較多,需要支持節(jié)點折疊。


2、選擇

????????選擇很重要,花了兩天時間對比了echarts、antv里的G2、G6,甚至還翻翻了D3。這個過程有點煩,先是嘗試echarts里的關(guān)系圖,畢竟是大廠出來的,API文檔還是挺全乎的,也易懂。深入研究后發(fā)現(xiàn)graph并不支持重復(fù)節(jié)點,無法實現(xiàn)需求,PASS。

????????再看看echarts里的tree,實話說echarts里的樹圖示例真的是好丑。產(chǎn)品同學過來一看,直接不同意啊。但畢竟是示例,我看看改造改造能否實現(xiàn)需求。發(fā)現(xiàn)有兩點不太好實現(xiàn):

1、節(jié)點的smybol圖標無法移除,導(dǎo)致文字即使能夠放入矩形內(nèi)也無法隱藏掉smybol。


2、當子節(jié)點過多時并排顯示時,效果很差。

轉(zhuǎn)入Antv里的G6看看,樣例中G6對流程圖、樹圖、文件系統(tǒng)圖支持的很好,但有兩點不如意的地方:1、沒有React版的示例,導(dǎo)致實現(xiàn)時需要花費大量時間研究,這也是我寫這篇文章的原因。百度出的npm包?如react-g6/react-for-g6?并無法解決問題。2、G6的文檔沒有echarts完善、專業(yè)。但G6的優(yōu)點也很明顯,對此類圖支持的很好、靈活,提供豐富的接口。

3、實現(xiàn)

Html版的實現(xiàn)有示例。React需要關(guān)注的有幾點:

1、安裝?

npm install @antv/g6 --save

npm install @antv/hierarchy --save

2、引用

3、G6?注冊?需要放在componentDidMount里,示例中可找到。我使用的自定義樹圖,如果不是自定義的,可忽略這段

4、數(shù)據(jù)渲染在componentWillMount?里實現(xiàn),在獲取后臺數(shù)據(jù)后,即可將數(shù)據(jù)傳入renderG6AfterData方法。

以后即可實現(xiàn)一個自定義樹圖 。

注意:

1、需要有一個容器:<div id={"mountNode"}></div>?在render()方法里return

2、在數(shù)據(jù)源多次變化時先需要銷毀畫布

3、至于其它的邊文字、節(jié)點提示等等,文檔好好看看就行了。這里只講React的簡單實現(xiàn),供大家少走彎路。官方HTML版示例鏈接:https://antv.alipay.com/zh-cn/g6/3.x/demo/tree/custom-tree.html

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容