From ae60f8ae96567ddcdfba3a01b45f7102c0fa1000 Mon Sep 17 00:00:00 2001 From: Lucas Oliveira Date: Thu, 23 Feb 2023 16:22:23 -0300 Subject: [PATCH] Node ID fixed with useRef --- space_flow/src/contexts/tabsContext.tsx | 29 +++++++++++++++---------- space_flow/src/pages/FlowPage/index.tsx | 6 ++--- 2 files changed, 20 insertions(+), 15 deletions(-) diff --git a/space_flow/src/contexts/tabsContext.tsx b/space_flow/src/contexts/tabsContext.tsx index 27cd2a9ec..d544db585 100644 --- a/space_flow/src/contexts/tabsContext.tsx +++ b/space_flow/src/contexts/tabsContext.tsx @@ -1,4 +1,4 @@ -import { createContext, useEffect, useState } from "react"; +import { createContext, useEffect, useState, useRef } from "react"; type flow={name:string,id:string,data:any} @@ -9,7 +9,7 @@ type TabsContextType={ removeFlow:(id:string)=>void; addFlow:(flowData?:any)=>void; updateFlow:(newFlow:flow)=>void; - nodeId:number; + incrementNodeId:()=>number, } const TabsContextInitialValue = { @@ -19,31 +19,38 @@ const TabsContextInitialValue = { removeFlow:(id:string)=>{}, addFlow:(flowData?:any)=>{}, updateFlow:(newFlow:flow)=>{}, - nodeId:0, + incrementNodeId:()=>0, } export const TabsContext = createContext(TabsContextInitialValue) +let _ = require('lodash'); + export function TabsProvider({children}){ const [tabIndex,setTabIndex] = useState(0) const [flows,setFlows] = useState>([]) const [id, setId] = useState(0); - let nodeId = 0; + + const newNodeId = useRef(0); + function incrementNodeId(){ + newNodeId.current = newNodeId.current + 1; + return newNodeId.current; + } useEffect(() => { if(flows.length !== 0) - window.localStorage.setItem('tabsData', JSON.stringify({tabIndex, flows, id, nodeId})); - }, [flows, id, nodeId, tabIndex]); + window.localStorage.setItem('tabsData', JSON.stringify({tabIndex, flows, id, nodeId: newNodeId.current})); + }, [flows, id, tabIndex, newNodeId]); useEffect(() => { let cookie = window.localStorage.getItem('tabsData'); if(cookie){ let cookieObject = JSON.parse(cookie); setTabIndex(cookieObject.tabIndex); - setFlows(cookieObject.flows) - setId(cookieObject.id) - nodeId = cookieObject.nodeId + setFlows(cookieObject.flows); + setId(cookieObject.id); + newNodeId.current= cookieObject.nodeId; } }, []) @@ -88,8 +95,8 @@ export function TabsProvider({children}){ } return( - + {children} ) -} \ No newline at end of file +} diff --git a/space_flow/src/pages/FlowPage/index.tsx b/space_flow/src/pages/FlowPage/index.tsx index cbab1f045..7bce6b89c 100644 --- a/space_flow/src/pages/FlowPage/index.tsx +++ b/space_flow/src/pages/FlowPage/index.tsx @@ -32,15 +32,13 @@ const nodeTypes = { var _ = require("lodash"); export default function FlowPage({ flow }) { - let { updateFlow, nodeId } = useContext(TabsContext); + let { updateFlow, incrementNodeId } = useContext(TabsContext); const { types, reactFlowInstance, setReactFlowInstance } = useContext(typesContext); const reactFlowWrapper = useRef(null); function getId(){ - console.log(nodeId); - nodeId = nodeId+1 - return `dndnode_}`+nodeId; + return `dndnode_}`+incrementNodeId(); }; const { setExtraComponent, setExtraNavigation } = useContext(locationContext);