From 4b43622034ce26f7a79bace7c9ecf928faacb70e Mon Sep 17 00:00:00 2001 From: Pavel Ivanov Date: Mon, 16 Dec 2024 12:54:22 +0200 Subject: [PATCH] store the latest render data --- packages/scan/src/core/index.ts | 78 +++++++++++---------------------- 1 file changed, 26 insertions(+), 52 deletions(-) diff --git a/packages/scan/src/core/index.ts b/packages/scan/src/core/index.ts index f3f87f39..0df6f2a8 100644 --- a/packages/scan/src/core/index.ts +++ b/packages/scan/src/core/index.ts @@ -220,66 +220,40 @@ export const setOptions = (options: Options) => { export const getOptions = () => ReactScanInternals.options; export const reportRender = (fiber: Fiber, renders: Array) => { - let reportFiber: Fiber; - let prevRenderData: RenderData | undefined; - - const currentFiberData = Store.reportData.get(fiber); - if (currentFiberData) { - reportFiber = fiber; - prevRenderData = currentFiberData; - } else if (!fiber.alternate) { - reportFiber = fiber; - prevRenderData = undefined; - } else { - reportFiber = fiber.alternate; - prevRenderData = Store.reportData.get(fiber.alternate); - } - + const reportFiber = fiber; + const { selfTime } = getTimings(fiber); const displayName = getDisplayName(fiber.type); Store.lastReportTime.value = performance.now(); - if (prevRenderData) { - prevRenderData.count = ((prevRenderData.count) ?? 0) + renders.length; - prevRenderData.renders.push(...renders); - if (renders[0]?.time) { - prevRenderData.time = ((prevRenderData.time) ?? 0) + (renders[0].time); - } - } else { - const { selfTime } = getTimings(fiber); - - const reportData = { - count: renders.length, - time: selfTime, - renders, - displayName, - type: null, - }; + const currentFiberData = Store.reportData.get(reportFiber) ?? { + count: 0, + time: 0, + renders: [], + displayName, + type: null, + }; - Store.reportData.set(reportFiber, reportData); - } + currentFiberData.count += renders.length; + currentFiberData.time += selfTime; + currentFiberData.renders = renders; + + Store.reportData.set(reportFiber, currentFiberData); if (displayName && ReactScanInternals.options.value.report) { - const prevLegacyRenderData = Store.legacyReportData.get(displayName); + const existingLegacyData = Store.legacyReportData.get(displayName) ?? { + count: 0, + time: 0, + renders: [], + displayName: null, + type: getType(fiber.type) || fiber.type, + }; - if (prevLegacyRenderData) { - prevLegacyRenderData.count = ((prevLegacyRenderData.count) ?? 0) + renders.length; - prevLegacyRenderData.renders.push(...renders); - if (renders[0]?.time) { - prevLegacyRenderData.time = ((prevLegacyRenderData.time) ?? 0) + (renders[0].time); - } - } else { - const { selfTime } = getTimings(fiber); - - const reportData = { - count: renders.length, - time: selfTime, - renders, - displayName: null, - type: getType(fiber.type) || fiber.type, - }; - Store.legacyReportData.set(displayName, reportData); - } + existingLegacyData.count += renders.length; + existingLegacyData.time += selfTime; + existingLegacyData.renders = renders; + + Store.legacyReportData.set(displayName, existingLegacyData); } };