diff --git a/chrome/content/zotero/components/annotation.jsx b/chrome/content/zotero/components/annotation.jsx index 865fd8f11d..4b56b84089 100644 --- a/chrome/content/zotero/components/annotation.jsx +++ b/chrome/content/zotero/components/annotation.jsx @@ -65,9 +65,10 @@ function AnnotationBox({ data }) { Zotero.AnnotationBox = memo(AnnotationBox); Zotero.AnnotationBox.render = (domEl, props) => { - ReactDOM.createRoot(domEl).render(); + Zotero.AnnotationBox.root = ReactDOM.createRoot(domEl); + Zotero.AnnotationBox.root.render(); }; -Zotero.AnnotationBox.destroy = (domEl) => { - ReactDOM.unmountComponentAtNode(domEl); +Zotero.AnnotationBox.destroy = () => { + Zotero.AnnotationBox.root.unmount(); }; diff --git a/chrome/content/zotero/components/createParent/createParent.jsx b/chrome/content/zotero/components/createParent/createParent.jsx index 85e087d9ad..aab14ade85 100644 --- a/chrome/content/zotero/components/createParent/createParent.jsx +++ b/chrome/content/zotero/components/createParent/createParent.jsx @@ -80,11 +80,12 @@ CreateParent.propTypes = { Zotero.CreateParent = memo(CreateParent); -Zotero.CreateParent.destroy = (domEl) => { - ReactDOM.unmountComponentAtNode(domEl); +Zotero.CreateParent.destroy = () => { + Zotero.CreateParent.root.unmount(); }; Zotero.CreateParent.render = (domEl, props) => { - ReactDOM.createRoot(domEl).render(); + Zotero.CreateParent.root = ReactDOM.createRoot(domEl); + Zotero.CreateParent.root.render(); }; diff --git a/chrome/content/zotero/containers/tagSelectorContainer.jsx b/chrome/content/zotero/containers/tagSelectorContainer.jsx index c8b29065f6..0ebc5b575b 100644 --- a/chrome/content/zotero/containers/tagSelectorContainer.jsx +++ b/chrome/content/zotero/containers/tagSelectorContainer.jsx @@ -860,7 +860,9 @@ Zotero.TagSelector = class TagSelectorContainer extends React.PureComponent { static async init(domEl, opts) { var ref; await new Promise((resolve) => { - ReactDOM.createRoot(domEl).render( { + let root = ReactDOM.createRoot(domEl); + opts.root = root; + root.render( { ref = c; resolve(); } } {...opts} />); @@ -870,7 +872,7 @@ Zotero.TagSelector = class TagSelectorContainer extends React.PureComponent { uninit() { this._uninitialized = true; - ReactDOM.unmountComponentAtNode(this.domEl); + this.props.root.unmount(); Zotero.Notifier.unregisterObserver(this._notifierID); Zotero.Prefs.unregisterObserver(this._prefObserverID); } @@ -878,6 +880,7 @@ Zotero.TagSelector = class TagSelectorContainer extends React.PureComponent { static propTypes = { container: PropTypes.string.isRequired, onSelection: PropTypes.func.isRequired, + root: PropTypes.object, }; };