diff --git a/content/home/examples/a-component-using-external-plugins.js b/content/home/examples/a-component-using-external-plugins.js
index 305efe61cfd..d968bb7a585 100644
--- a/content/home/examples/a-component-using-external-plugins.js
+++ b/content/home/examples/a-component-using-external-plugins.js
@@ -36,7 +36,4 @@ class MarkdownEditor extends React.Component {
}
}
-ReactDOM.render(
- ,
- document.getElementById('markdown-example')
-);
+root.render();
diff --git a/content/home/examples/a-simple-component.js b/content/home/examples/a-simple-component.js
index 90c31b960f7..6e9c5ae563c 100644
--- a/content/home/examples/a-simple-component.js
+++ b/content/home/examples/a-simple-component.js
@@ -1,14 +1,7 @@
class HelloMessage extends React.Component {
render() {
- return (
-
- Hello {this.props.name}
-
- );
+ return Hello {this.props.name}
;
}
}
-ReactDOM.render(
- ,
- document.getElementById('hello-example')
-);
\ No newline at end of file
+root.render();
diff --git a/content/home/examples/a-stateful-component.js b/content/home/examples/a-stateful-component.js
index 25d5a914594..bc329253bb0 100644
--- a/content/home/examples/a-stateful-component.js
+++ b/content/home/examples/a-stateful-component.js
@@ -27,7 +27,4 @@ class Timer extends React.Component {
}
}
-ReactDOM.render(
- ,
- document.getElementById('timer-example')
-);
\ No newline at end of file
+root.render();
diff --git a/content/home/examples/an-application.js b/content/home/examples/an-application.js
index 08dbc2bf821..c4313e85243 100644
--- a/content/home/examples/an-application.js
+++ b/content/home/examples/an-application.js
@@ -60,7 +60,4 @@ class TodoList extends React.Component {
}
}
-ReactDOM.render(
- ,
- document.getElementById('todos-example')
-);
+root.render();
diff --git a/src/components/CodeEditor/CodeEditor.js b/src/components/CodeEditor/CodeEditor.js
index 881865bca7e..dbf21abdec6 100644
--- a/src/components/CodeEditor/CodeEditor.js
+++ b/src/components/CodeEditor/CodeEditor.js
@@ -248,14 +248,23 @@ class CodeEditor extends Component {
_render() {
const {compiled} = this.state;
+ const {containerNodeID} = this.props;
+
+ // Until we upgrade Gatsby to React 18, fake the new root API.
+ const root = {
+ render: element => {
+ ReactDOM.render(element, document.getElementById(containerNodeID));
+ },
+ };
try {
// Example code requires React, ReactDOM, and Remarkable to be within scope.
// It also requires a "mountNode" variable for ReactDOM.render()
// eslint-disable-next-line no-new-func
- new Function('React', 'ReactDOM', 'Remarkable', compiled)(
+ new Function('React', 'ReactDOM', 'root', 'Remarkable', compiled)(
React,
ReactDOM,
+ root,
Remarkable,
);
} catch (error) {