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,
};
};