@rxflow/base
Version:
BaseFlow - 核心 Flow 组件库
39 lines (38 loc) • 1.42 kB
JavaScript
/**
* @author: yanxianliang
* @date: 2025-08-25 17:49
* @modified:2025/8/25 17:49 by yanxianliang
* @desc: Render 监听并回传对应的事件
*
* Copyright (c) 2025 by yanxianliang, All Rights Reserved.
*/
import { useNodes, useReactFlow } from "@xyflow/react";
import { useEffect, useRef } from "react";
import { useGetProps } from "./..";
export var useListenRender = function useListenRender() {
var getProps = useGetProps();
var onRender = getProps().onRender;
var nodes = useNodes();
var _useReactFlow = useReactFlow(),
getEdges = _useReactFlow.getEdges;
var startRenderTimeRef = useRef(performance.now());
var isWaitInitRef = useRef(true); // 等待触发初始化回调
useEffect(function () {
if (nodes.length === 0) {
startRenderTimeRef.current = performance.now();
} else {
// 计算时间,
if (isWaitInitRef.current) {
setTimeout(function () {
var timing = performance.now() - startRenderTimeRef.current;
var edges = getEdges();
onRender === null || onRender === void 0 || onRender(nodes, edges, timing);
if (getProps().debug) {
console.log("\u521D\u59CB\u5316\u8282\u70B9\u6570\uFF1A".concat(nodes.length, ", \u8FB9\uFF1A").concat(edges.length, ", \u6E32\u67D3\u65F6\u957F\uFF1A").concat(timing));
}
}, 1);
}
isWaitInitRef.current = false;
}
}, [nodes]);
};