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) {