diff --git a/packages/core/src/hooks/useSetSettings.ts b/packages/core/src/hooks/useSetSettings.ts index 1f4b8709..571e818d 100644 --- a/packages/core/src/hooks/useSetSettings.ts +++ b/packages/core/src/hooks/useSetSettings.ts @@ -1,4 +1,4 @@ -import { useEffect, useState } from "react"; +import { useCallback } from "react"; import { Settings } from "sigma/settings"; import { useSigmaContext } from "./context"; @@ -24,32 +24,18 @@ export function useSetSettings< E extends Attributes = Attributes, G extends Attributes = Attributes, >(): (newSettings: Partial>) => void { - const { sigma, container } = useSigmaContext(); - const [settings, setSettings] = useState>>({}); + const { sigma } = useSigmaContext(); - useEffect(() => { - if (!sigma || !settings) { - return; - } - - const prevSettings: Partial> = {}; - - (Object.keys(settings) as Array>).forEach((key) => { - // as never because of https://stackoverflow.com/questions/58656353/how-to-avoid-dynamic-keyof-object-assign-error-in-typescript - prevSettings[key] = settings[key] as never; - sigma.setSetting(key, settings[key] as never); - }); - - // cleanup - return () => { - if (sigma && container && container.offsetWidth > 0 && container.offsetHeight > 0) { - (Object.keys(prevSettings) as Array>).forEach((key) => { - // as never because of https://stackoverflow.com/questions/58656353/how-to-avoid-dynamic-keyof-object-assign-error-in-typescript - sigma.setSetting(key, prevSettings[key] as never); - }); - } - }; - }, [sigma, settings, container]); + const setSettings = useCallback( + (newSettings: Partial>) => { + if (!sigma) return; + (Object.keys(newSettings) as Array>).forEach((key) => { + // as never because of https://stackoverflow.com/questions/58656353/how-to-avoid-dynamic-keyof-object-assign-error-in-typescript + sigma.setSetting(key, newSettings[key] as never); + }); + }, + [sigma], + ); return setSettings; }