Skip to content

Commit 01a6732

Browse files
author
Loïc Mangeonjean
committed
fix: fix usage with react strict mode
immediately unregister file
1 parent 85d6e70 commit 01a6732

File tree

1 file changed

+12
-14
lines changed

1 file changed

+12
-14
lines changed

src/MonacoEditor.tsx

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -202,16 +202,15 @@ function MonacoEditor ({
202202
editorRef.current!.setModel(null)
203203
return
204204
}
205-
let cancelled = false
206-
async function updateModel () {
205+
const disposableStore = new DisposableStore()
206+
async function updateModel (): Promise<void> {
207207
modelRef.current = undefined
208208
editorRef.current!.setModel(null)
209209
setModelReady(false)
210210

211211
const value = valueRef.current
212212
let modelIRef: IReference<ITextFileEditorModel> | undefined
213213
let model: monaco.editor.ITextModel
214-
const disposableStore = new DisposableStore()
215214
if (fileUri != null) {
216215
const uri = monaco.Uri.parse(fileUri)
217216

@@ -224,9 +223,8 @@ function MonacoEditor ({
224223
}
225224
})
226225
modelIRef = (await modelIRefPromise)!
227-
if (cancelled) {
228-
modelIRef.dispose()
229-
return () => {}
226+
if (disposableStore.isDisposed) {
227+
return
230228
}
231229
disposableStore.add(modelIRef.object.onDidSave(lastOnDidSave))
232230
model = modelIRef.object.textEditorModel!
@@ -243,17 +241,17 @@ function MonacoEditor ({
243241
if (editorRef.current != null) {
244242
lastRestoreViewState(editorRef.current, model)
245243
}
246-
return () => {
247-
if (editorRef.current != null) {
248-
lastSaveViewState(editorRef.current, model)
244+
disposableStore.add({
245+
dispose () {
246+
if (editorRef.current != null) {
247+
lastSaveViewState(editorRef.current, model)
248+
}
249249
}
250-
disposableStore.dispose()
251-
}
250+
})
252251
}
253-
const disposePromise = updateModel()
252+
updateModel().catch(console.error)
254253
return () => {
255-
cancelled = true
256-
disposePromise.then(dispose => dispose(), console.error)
254+
disposableStore.dispose()
257255
}
258256
}, [monacoLanguage, fileUri, valueRef, lastSaveViewState, lastRestoreViewState, hasValue, lastOnDidSave])
259257

0 commit comments

Comments
 (0)