Prevent running editor effects with a destroyed view during strict mode and suspense #24
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes nytimes/react-prosemirror#101, #8
During Suspense, it's possible for the layout effect cleanup function that calls
view.destroy()
to be run immediately before the layout group effect that executesuseEditorEffect
callbacks. This results in calling those callbacks with a destroyed editor (one without a docView), which crashes the editor. This can be simulated in Strict Mode with the sample code from #8.To fix this, we avoid calling useEditorEffect callbacks if the view that we have access to is destroyed. The next render will produce a new, undestroyed EditorView and trigger another callback call, so this doesn't result in any missed calls!