From 3db049faba4b39871baf9cdc5725e0a1987cad5c Mon Sep 17 00:00:00 2001 From: Manfred Cheung Date: Mon, 7 Jul 2025 15:22:17 -0400 Subject: [PATCH 1/8] generate iframe ref only once on init to prevent repeated calls --- CHANGELOG.md | 4 +++ projects/client-api-react/src/index.js | 35 ++++++++++++++++---------- 2 files changed, 26 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a34306c..9693331 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,10 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline * **client-api**: Add `playUpdates` observer which creates event when graph simulation completes * **client-api-react**: Add `onPlayComplete` callback property +### Fix + +* **client-api-react**: Fix updating props or using ref functions ocasionally causing repeated function calls. + ## 5.1.4 - 2025-05-29 ### Added diff --git a/projects/client-api-react/src/index.js b/projects/client-api-react/src/index.js index ffd6768..e594515 100644 --- a/projects/client-api-react/src/index.js +++ b/projects/client-api-react/src/index.js @@ -360,18 +360,16 @@ function handleUpdates({ g, isFirstRun, axesMap, props }) { } -// Regenerate on url change function generateIframeRef({ setLoading, setLoadingMessage, setG, setGSub, setGObs, setGErr, setFirstRun, - url, dataset, props, + dataset, props, axesMap, - iframeStyle, iframeClassName, iframeProps, allowFullScreen, tolerateLoadErrors }) { - console.debug('@generateIframeRef', { url, dataset, props, axesMap, iframeStyle, iframeClassName, iframeProps, allowFullScreen, tolerateLoadErrors }); + console.debug('@generateIframeRef', { dataset, props, axesMap, tolerateLoadErrors }); - return useCallback(iframe => { + return iframe => { if (iframe && dataset) { console.debug('@generateIframeRef callback', { iframe, dataset }); let loaded = false; @@ -445,10 +443,7 @@ function generateIframeRef({ console.debug('no iframe', typeof (iframe), { iframe, dataset }); return () => { }; } - }, [ - url, - iframeStyle, iframeClassName, iframeProps, allowFullScreen - ]); + }; } // iframe refreshes on key arg changes: via