1- import { useEffect , useState } from "react" ;
1+ import { useCallback } from "react" ;
22import { Settings } from "sigma/settings" ;
33
44import { useSigmaContext } from "./context" ;
@@ -24,32 +24,18 @@ export function useSetSettings<
2424 E extends Attributes = Attributes ,
2525 G extends Attributes = Attributes ,
2626> ( ) : ( newSettings : Partial < Settings < N , E , G > > ) => void {
27- const { sigma, container } = useSigmaContext < N , E , G > ( ) ;
28- const [ settings , setSettings ] = useState < Partial < Settings < N , E , G > > > ( { } ) ;
27+ const { sigma } = useSigmaContext < N , E , G > ( ) ;
2928
30- useEffect ( ( ) => {
31- if ( ! sigma || ! settings ) {
32- return ;
33- }
34-
35- const prevSettings : Partial < Settings < N , E , G > > = { } ;
36-
37- ( Object . keys ( settings ) as Array < keyof Settings < N , E , G > > ) . forEach ( ( key ) => {
38- // as never because of https://stackoverflow.com/questions/58656353/how-to-avoid-dynamic-keyof-object-assign-error-in-typescript
39- prevSettings [ key ] = settings [ key ] as never ;
40- sigma . setSetting ( key , settings [ key ] as never ) ;
41- } ) ;
42-
43- // cleanup
44- return ( ) => {
45- if ( sigma && container && container . offsetWidth > 0 && container . offsetHeight > 0 ) {
46- ( Object . keys ( prevSettings ) as Array < keyof Settings < N , E , G > > ) . forEach ( ( key ) => {
47- // as never because of https://stackoverflow.com/questions/58656353/how-to-avoid-dynamic-keyof-object-assign-error-in-typescript
48- sigma . setSetting ( key , prevSettings [ key ] as never ) ;
49- } ) ;
50- }
51- } ;
52- } , [ sigma , settings , container ] ) ;
29+ const setSettings = useCallback (
30+ ( newSettings : Partial < Settings < N , E , G > > ) => {
31+ if ( ! sigma ) return ;
32+ ( Object . keys ( newSettings ) as Array < keyof Settings < N , E , G > > ) . forEach ( ( key ) => {
33+ // as never because of https://stackoverflow.com/questions/58656353/how-to-avoid-dynamic-keyof-object-assign-error-in-typescript
34+ sigma . setSetting ( key , newSettings [ key ] as never ) ;
35+ } ) ;
36+ } ,
37+ [ sigma ] ,
38+ ) ;
5339
5440 return setSettings ;
5541}
0 commit comments