Llamo a dispose() y lo configuro en null después, en la función de devolución de llamada de limpieza de useEffect. ¿Es esta una buena práctica llamar a dispose() allí explícitamente y anularlo para ambos: evitar un uso posterior y decirle al GC de JS que lo recopile?
useEffect(() => { let markersDispo: monaco.IDisposable | null = monaco.editor.onDidChangeMarkers(handleMarketsChanges); return () => { markersDispo!.dispose(); markersDispo = null; }, [foo]);