I’m trying to create an app but it is facing some issues. When I run the command npm start
it started showing this error.
I’m trying to upgrade the react-router-dom
from v5 to v6 but I am getting this error message.
Error: [undefined] is not a
<Route>
component. All component
children of<Routes>
must be a<Route>
or<React.Fragment>
index.js
import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';
import { BrowserRouter } from "react-router-dom"
ReactDOM.render(
<React.StrictMode>
<BrowserRouter>
<App />
</BrowserRouter>
</React.StrictMode>,
document.getElementById('root')
);
app.js
import React from 'react'
import { BrowserRouter as Router, Route, Routes} from 'react-router-dom'
import Landing from './pages/Landing/Landing'
import ResumeCreate from './pages/ResumeCreate/ResumeCreate'
function App() {
return (
<div className="app">
<Router>
<Routes>
<Route path="/" element={<Landing />} />
<Route path="/create" exact>
<ResumeCreate />
</Route>
</Routes>
</Router>
</div>
)
}
export default App
Resumecreate.js
import React, { useEffect, useState } from 'react';
import PropTypes from 'prop-types';
import { Route, Routes, BrowserRouter } from 'react-router-dom';
import { connect } from 'react-redux';
import { toast, ToastContainer } from 'react-toastify';
import { createBrowserHistory } from 'history';
import classNames from 'classnames';
import constants from '../../config/constants';
import FocusTrap from "../../helpers/app.helper";
import routes from '../../routes';
import "../../styles/App.css"
import "../../styles/darkmode.css"
const history = createBrowserHistory();
const { ROUTES } = constants;
const { Home } = routes;
function ResumeCreate({
editorOpen,
toolbarOpen,
moreVisibilityOpen,
darkMode,
autoSave,
}) {
const [autoSaveToastId, setToastId] = useState('');
useEffect(() => {
if (!autoSave) {
const id = toast.warn(
'To prevent data loss, download your resume using the Download button or turn on auto save!',
{
autoClose: false,
position: 'bottom-right',
closeOnClick: false,
},
);
setToastId(id);
} else {
toast.dismiss(autoSaveToastId);
setToastId('');
}
}, [autoSave]);
return (
<div className={classNames('App', { darkMode })}>
<ToastContainer
position="top-center"
autoClose={3000}
hideProgressBar={false}
newestOnTop={false}
closeOnClick
closeButton={false}
rtl={false}
/>
<BrowserRouter history={history}>
<Routes>
<Route exact path={ROUTES.HOME.PATH} element={<Home />} />
<Route path='/' element={<Home />} />
</Routes>
</BrowserRouter>
<FocusTrap full={editorOpen} mobile={toolbarOpen || moreVisibilityOpen} />
</div>
);
}
export default connect(mapStateToProps)(ResumeCreate);
Is it problem with the version?
2
Answers
edit your index
file code
There should also be only 1 router per React app. Remove the extraneous routers from
App
andResumeCreate
since the entire app is already wrapped in aBrowserRouter
.ResumeCreate
is not aRoute
component, render it on aRoute
‘selement
prop, not as a child component, and ensure a wildcard splat"*"
matcher is appended to it’s route so the descendent routes thatResumeCreate
is rendering can also be matched and rendered.