1

I am trying to create a React on Rails project for the first time. I have

"react": "^18.2.0",
"react_ujs": "^2.6.2",
"react-dom": "^18.2.0",
"react-router-dom": "^6.3.0",

And I am trying to create a router (as per the tutorial here)

import React from "react"
import { BrowserRouter as Router, Route, Routes } from 'react-router-dom'

import PropTypes from "prop-types"
class App extends React.Component {
  render () {
    return (
      <Router>
        <Routes>
          <Route exact path="/" render={() => ('home') } />
          <Route path="/hello" render={() => <HelloWorld greeting="Friend" />} />
        </Routes>
      </Router>
    );
  }
}

export default App

The error I keep getting is Warning: You are importing createRoot from react-dom which is not supported. You should instead import it from react-dom/client. "rails"

I have researched this thoroughly, and there are many explanations on how to solve it for pure react, but none about react on rails as far as I can find. One suggestion was to deprecate the react-dom version, but it was obviously highly disrecommended. Can anyone tell me what I should do?

H Zaman
  • 43
  • 5

1 Answers1

0

Someone solved it for me:

The tutorial is using outdated syntax. The correct syntax should be something like:

import React from "react"
import { BrowserRouter as Router, Route, Routes } from 'react-router-dom'
import PropTypes from "prop-types"

import HelloWorld from './HelloWorld';

class App extends React.Component {
  render () {
    return (
      <Router>
        <Routes>
          <Route exact path="/" element={<h1>Hello World</h1>} />
          <Route path="/hello" element={<HelloWorld greeting="Friend" />} />} />
        </Routes>
      </Router>
    );
  }
}

export default App

using element= instead of render= and without the function () =>

H Zaman
  • 43
  • 5