Few day ago I have a problem with: ReactDOM.render is no longer supported in React 18
. Simple solution is to use:
import ReactDOM from " react-dom/client " ;
in index.js file
import React from " react " ;
import ReactDOM from " react-dom/client " ;
import " ./index.css " ;
import App from " ./App " ;
import reportWebVitals from " ./reportWebVitals " ;
const root = ReactDOM . createRoot ( document . getElementById ( " root " ));
root . render (
< React . StrictMode >
< App />
</ React . StrictMode >
);
reportWebVitals ();
There was a few changes wile providing next version of React 18, for example:
// Before
import { render } from ' react-dom ' ;
const container = document . getElementById ( ' app ' );
render (< App tab = "home" />, container );
// After
import { createRoot } from ' react-dom/client ' ;
const container = document . getElementById ( ' app ' );
const root = createRoot ( container );
root . render (< App tab = "home" />);
import * as ReactDOMClient from ' react-dom/client ' ;
import App from ' App ' ;
const container = document . getElementById ( ' app ' );
// Create a root.
const root = ReactDOMClient . createRoot ( container );
// Initial render: Render an element to the root.
root . render (< App tab = "home" />);
// During an update, there's no need to pass the container again.
root . render (< App tab = "profile" />);
import * as ReactDOM from ' react-dom ' ;
import App from ' App ' ;
const container = document . getElementById ( ' app ' );
// Initial render.
ReactDOM . render (< App tab = "home" />, container );
// During an update, React would access
// the root of the DOM element.
ReactDOM . render (< App tab = "profile" />, container );
root . render (< App tab = "profile" />);
Reference:
How to Upgrade to React 18
React Top-Level API
React 18 New Features – Concurrent Rendering, Automatic Batching, and More
My site is free of ads and trackers. Was this post helpful to you? Why not