fix(onLoad): only call once closes #393

This commit is contained in:
moklick
2020-08-03 17:12:04 +02:00
parent 56dc40b7cc
commit 915bc72974
+15 -12
View File
@@ -107,6 +107,7 @@ const GraphView = ({
paneMoveable, paneMoveable,
onPaneClick, onPaneClick,
}: GraphViewProps) => { }: GraphViewProps) => {
const isInitialised = useRef<boolean>(false);
const zoomPane = useRef<HTMLDivElement>(null); const zoomPane = useRef<HTMLDivElement>(null);
const rendererNode = useRef<HTMLDivElement>(null); const rendererNode = useRef<HTMLDivElement>(null);
const d3Initialised = useStoreState((state) => state.d3Initialised); const d3Initialised = useStoreState((state) => state.d3Initialised);
@@ -147,19 +148,19 @@ const GraphView = ({
}); });
useEffect(() => { useEffect(() => {
if (d3Initialised && onLoad) { if (!isInitialised.current && d3Initialised) {
onLoad({ if (onLoad) {
fitView: (params = { padding: 0.1 }) => fitView(params), onLoad({
zoomIn: () => zoom(0.2), fitView: (params = { padding: 0.1 }) => fitView(params),
zoomOut: () => zoom(-0.2), zoomIn: () => zoom(0.2),
project, zoomOut: () => zoom(-0.2),
getElements, project,
setTransform: (transform: FlowTransform) => getElements,
setInitTransform({ x: transform.x, y: transform.y, k: transform.zoom }), setTransform: (transform: FlowTransform) =>
}); setInitTransform({ x: transform.x, y: transform.y, k: transform.zoom }),
} });
}
if (d3Initialised) {
const initialTransform = { const initialTransform = {
x: defaultPosition[0], x: defaultPosition[0],
y: defaultPosition[1], y: defaultPosition[1],
@@ -169,6 +170,8 @@ const GraphView = ({
if (initialTransform.x !== 0 || initialTransform.y !== 0 || initialTransform.k !== 1) { if (initialTransform.x !== 0 || initialTransform.y !== 0 || initialTransform.k !== 1) {
setInitTransform(initialTransform); setInitTransform(initialTransform);
} }
isInitialised.current = true;
} }
}, [d3Initialised, onLoad]); }, [d3Initialised, onLoad]);