@rxflow/base
Version:
BaseFlow - 核心 Flow 组件库
48 lines (45 loc) • 1.45 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.useListenRender = void 0;
var _react = require("@xyflow/react");
var _react2 = require("react");
var _ = require("./..");
/**
* @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.
*/
const useListenRender = () => {
const getProps = (0, _.useGetProps)();
const onRender = getProps().onRender;
const nodes = (0, _react.useNodes)();
const {
getEdges
} = (0, _react.useReactFlow)();
const startRenderTimeRef = (0, _react2.useRef)(performance.now());
const isWaitInitRef = (0, _react2.useRef)(true); // 等待触发初始化回调
(0, _react2.useEffect)(() => {
if (nodes.length === 0) {
startRenderTimeRef.current = performance.now();
} else {
// 计算时间,
if (isWaitInitRef.current) {
setTimeout(() => {
const timing = performance.now() - startRenderTimeRef.current;
const edges = getEdges();
onRender?.(nodes, edges, timing);
if (getProps().debug) {
console.log(`初始化节点数:${nodes.length}, 边:${edges.length}, 渲染时长:${timing}`);
}
}, 1);
}
isWaitInitRef.current = false;
}
}, [nodes]);
};
exports.useListenRender = useListenRender;