【React】AntV G6 - 快速入手

2024-03-12 09:20

本文主要是介绍【React】AntV G6 - 快速入手,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

环境

  • react: ^18
  • next: 14.1.0
  • @antv/g6: ^4.8.24

安装

npm install @antv/g6# or
pnpm add @antv/g6# or 
yarn add @antv/g6

使用

模拟数据

const data = {nodes: [ // 节点信息{id: "node1",data: {name: "Circle1"}},{id: "node2",data: {name: "Circle2"}}],edges: [ // 边线{id: "edge1",source: "node1",target: "node2"}]
};

示例

创建ForceGraph组件

// file: component/ForceGraph/index.tsx
"use client"import type { GraphOptions, GraphData } from '@antv/g6';import React, {useEffect, useRef} from "react"
import { Graph } from '@antv/g6';interface Props{  nodes: any[],  edges: any[],  options?: GraphOptions  
}// 基础配置
const defaultOptions = {width: 500,height: 500,defaultNode: {type: "circle",size: [100],color: "#5B8FF9",style: {fill: "#9EC9FF",lineWidth: 3},labelCfg: {style: {fill: "#fff",fontSize: 20}}},defaultEdge: {style: {stroke: "#e2e2e2"}}
};const ForceGraph = function (props:Props
) {const containerRef= useRef<HTMLDivElement | null>(null);const graphRef = React.useRef<Graph>();const data:GraphData = {nodes:[], edges:[]};useEffect(()=>{if(graphRef.current || !containerRef.current)return;if (props.nodes)data.nodes=props.nodesif (props.edges)data.edges=props.edgesconst _options = Object.assign({}, defaultOptions, props.options);_options.container = containerRef.current;const graph = new Graph(_options);// 绑定数据graph.data(data);// 渲染图graph.render();graphRef.current = graph;}, [props.nodes,props.edges,])return <div ref={containerRef}></div>;
}export default ForceGraph

组件调用

// file: app/pages.tsx
import ForceGraph from "@/component/ForceGraph";export default function Home(){const data = {nodes: [{ id: 'node1', data: { name: 'Circle1' } },{ id: 'node2', data: { name: 'Circle2' } },],edges: [{ id: 'edge1', source: 'node1', target: 'node2', data: {} }],};return (<div><ForceGraphnodes={data.nodes}edges={data.edges}/></div>)
}

效果

![[Pasted image 20240311114517.png]]

这篇关于【React】AntV G6 - 快速入手的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/800807

相关文章

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

springboot security快速使用示例详解

《springbootsecurity快速使用示例详解》:本文主要介绍springbootsecurity快速使用示例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝... 目录创www.chinasem.cn建spring boot项目生成脚手架配置依赖接口示例代码项目结构启用s

Vue中组件之间传值的六种方式(完整版)

《Vue中组件之间传值的六种方式(完整版)》组件是vue.js最强大的功能之一,而组件实例的作用域是相互独立的,这就意味着不同组件之间的数据无法相互引用,针对不同的使用场景,如何选择行之有效的通信方式... 目录前言方法一、props/$emit1.父组件向子组件传值2.子组件向父组件传值(通过事件形式)方

css中的 vertical-align与line-height作用详解

《css中的vertical-align与line-height作用详解》:本文主要介绍了CSS中的`vertical-align`和`line-height`属性,包括它们的作用、适用元素、属性值、常见使用场景、常见问题及解决方案,详细内容请阅读本文,希望能对你有所帮助... 目录vertical-ali

浅析CSS 中z - index属性的作用及在什么情况下会失效

《浅析CSS中z-index属性的作用及在什么情况下会失效》z-index属性用于控制元素的堆叠顺序,值越大,元素越显示在上层,它需要元素具有定位属性(如relative、absolute、fi... 目录1. z-index 属性的作用2. z-index 失效的情况2.1 元素没有定位属性2.2 元素处

Python实现html转png的完美方案介绍

《Python实现html转png的完美方案介绍》这篇文章主要为大家详细介绍了如何使用Python实现html转png功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 1.增强稳定性与错误处理建议使用三层异常捕获结构:try: with sync_playwright(

Vue 调用摄像头扫描条码功能实现代码

《Vue调用摄像头扫描条码功能实现代码》本文介绍了如何使用Vue.js和jsQR库来实现调用摄像头并扫描条码的功能,通过安装依赖、获取摄像头视频流、解析条码等步骤,实现了从开始扫描到停止扫描的完整流... 目录实现步骤:代码实现1. 安装依赖2. vue 页面代码功能说明注意事项以下是一个基于 Vue.js

CSS @media print 使用详解

《CSS@mediaprint使用详解》:本文主要介绍了CSS中的打印媒体查询@mediaprint包括基本语法、常见使用场景和代码示例,如隐藏非必要元素、调整字体和颜色、处理链接的URL显示、分页控制、调整边距和背景等,还提供了测试方法和关键注意事项,并分享了进阶技巧,详细内容请阅读本文,希望能对你有所帮助...

C++快速排序超详细讲解

《C++快速排序超详细讲解》快速排序是一种高效的排序算法,通过分治法将数组划分为两部分,递归排序,直到整个数组有序,通过代码解析和示例,详细解释了快速排序的工作原理和实现过程,需要的朋友可以参考下... 目录一、快速排序原理二、快速排序标准代码三、代码解析四、使用while循环的快速排序1.代码代码1.由快

Win32下C++实现快速获取硬盘分区信息

《Win32下C++实现快速获取硬盘分区信息》这篇文章主要为大家详细介绍了Win32下C++如何实现快速获取硬盘分区信息,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 实现代码CDiskDriveUtils.h#pragma once #include <wtypesbase