Selaa lähdekoodia

Wrap the useCodeMirrorMeasurement state setter in a timeout (#16818)

GitOrigin-RevId: 9f7c12f679ab3947724cc52c63fcee198c73ae87
Alf Eaton 2 vuotta sitten
vanhempi
sitoutus
373c4736e8

+ 5 - 2
services/web/frontend/js/features/source-editor/hooks/use-codemirror-measurement.ts

@@ -8,7 +8,7 @@ export default function useCodeMirrorMeasurement(
   measure: (view: EditorView) => number
 ) {
   const view = useCodeMirrorViewContext()
-  const [measurement, setMeasurement] = useState(measure(view))
+  const [measurement, setMeasurement] = useState(() => measure(view))
 
   useEventListener(
     'editor:geometry-change',
@@ -17,7 +17,10 @@ export default function useCodeMirrorMeasurement(
         key,
         read: () => measure(view),
         write(value) {
-          setMeasurement(value)
+          // wrap the React state setter in a timeout so it doesn't run inside the CodeMirror update cycle
+          window.setTimeout(() => {
+            setMeasurement(value)
+          })
         },
       })
     }, [view, measure, key])