Skip to content

Tinyflow React 组件使用文档

简介

@tinyflow-ai/react 是一个基于 React 的封装组件,用于在 React 项目中快速集成 Tinyflow 流程设计器。它提供了简洁的 API 和灵活的配置选项,方便开发者在 React 应用中嵌入流程设计功能。

本组件依赖于 @tinyflow-ai/ui 提供的核心功能,并通过 React 的 forwardRef 和 useImperativeHandle 提供了对底层实例的访问能力。

安装

通过 npm 或 yarn 安装:

shell
npm install @tinyflow-ai/react

或者

shell
yarn add @tinyflow-ai/react

使用组件

以下是一个简单的使用示例,展示如何在 React 项目中使用 @tinyflow-ai/react 组件。

tsx
import React, { useRef } from 'react';
import { Tinyflow, TinyflowHandle } from '@tinyflow-ai/react';
import '@tinyflow-ai/react/dist/index.css'

const App = () => {
const tinyflowRef = useRef<TinyflowHandle>(null);

    const handleGetData = () => {
        if (tinyflowRef.current) {
            const data = tinyflowRef.current.getData();
            console.log('Flow Data:', data);
        }
    };

    return (
            <div>
                <h1>Tinyflow React Example</h1>
                <Tinyflow
                    ref={tinyflowRef}
                    data={{
                        nodes: [],
                        edges: []
                    }}
                    style={{ border: '1px solid #ccc' }}
                className="custom-class"
                />
                <button onClick={handleGetData}>获取流程数据</button>
            </div>
        );
    };

export default App;

属性说明

属性名类型默认值说明
classNamestring''自定义类名,用于为组件添加额外的样式类。
styleRecord<string, string>{}自定义内联样式,用于动态设置组件的宽度、高度等样式属性。
dataRecord<string, any>{}初始化数据,包含流程图的节点 (nodes) 和边 (edges) 等信息。

方法说明

Tinyflow 组件提供了一些方法,用于获取和设置流程图的数据。

方法名参数返回值说明
getDataRecord<string, any> 或 null获取当前流程图的数据,包括节点和边的信息。如果组件未初始化,则返回 null 并打印警告日志。

示例代码

以下是一个完整的示例,展示如何在 Vue 项目中使用 Tinyflow 组件:

tsx
import React, { useRef } from 'react';
import { Tinyflow, TinyflowHandle } from '@tinyflow-ai/react';
import '@tinyflow-ai/react/dist/index.css'

const App = () => {
const tinyflowRef = useRef<TinyflowHandle>(null);

    const handleGetData = () => {
        if (tinyflowRef.current) {
            const data = tinyflowRef.current.getData();
            console.log('Flow Data:', data);
        }
    };

    return (
            <div>
                <h1>Tinyflow React Example</h1>
                <Tinyflow
                    ref={tinyflowRef}
                    data={{
                        nodes: [
                            { id: '1', label: '开始', position: { x: 100, y: 100 } },
                            { id: '2', label: '结束', position: { x: 300, y: 100 } }
                        ],
                        edges: [
                            { source: '1', target: '2' }
                        ]
                    }}
                    style={{ border: '1px solid #ccc' }}
                className="custom-class"
                />
                <button onClick={handleGetData}>获取流程数据</button>
            </div>
        );
    };

export default App;