Просмотр исходного кода

[ide-react] Ensure that selectEntity is only called when openDocId changes (#15915)

GitOrigin-RevId: 22e4e6c83618fcfca5adcbde56e07abda045f251
Alf Eaton 2 лет назад
Родитель
Сommit
ca75c02bea

+ 8 - 3
services/web/frontend/js/features/ide-react/components/editor-and-sidebar.tsx

@@ -132,14 +132,19 @@ export function EditorAndSidebar({
     [eventEmitter, openDocId, openDocWithId, rootDocId]
   )
 
+  const openDocIdRef = useRef<typeof openDocId | null>(null)
+
   // Synchronize the file tree when openDoc or openDocId is called on the editor
   // manager context from elsewhere. If the file tree does change, it will
   // trigger the onSelect handler in this component, which will update the local
   // state.
   useEffect(() => {
-    debugConsole.log(`openDocId changed to ${openDocId}`)
-    if (openDocId !== null) {
-      selectEntity(openDocId)
+    if (openDocId !== openDocIdRef.current) {
+      debugConsole.log(`openDocId changed to ${openDocId}`)
+      openDocIdRef.current = openDocId
+      if (openDocId !== null) {
+        selectEntity(openDocId)
+      }
     }
   }, [openDocId, selectEntity])