I'm new on ReactJS. I follow thistutorial but I got error with my Router
There is my app.js
import './App.css';
import {BrowserRouter} from 'react-router-dom';
import MyRoutes from "./MyRoutes";
function App() {
return (
<BrowserRouter>
<div className="App">
<MyRoutes/>
</div>
</BrowserRouter>
);
}
export default App;
My MyRoutes.js
import React from 'react';
import {Routes,Route,Navigate} from 'react-router-dom';
import Home from "./components/pages/HomeComponent";
import Login from "./components/pages/LoginComponent";
import Register from "./components/pages/RegisterComponent";
import PrivateRoute from './PrivateRoute';
import {Guard} from './Guard';
import Header from './components/layouts/Header';
function MyRoutes(){
return (
<>
<Header/>
<Routes>
<Route exact path="/" render={props => (
<Navigate to={{ pathname: '/home' }} />
)}/>
<Route path="/home" element={<Home/>}/>
<Route path="/user/login" element={<Login/>}/>
<Route path="/user/register" element={<Register/>}/>
{/*Redirect if not authenticated */}
<Route element={<Guard path="/user" token="user-token" routeRedirect="/user/login" element={<PrivateRoute/>} />} />
</Routes>
</>
);
}
export default MyRoutes;
My Guard.js
import React from 'react';
import {Route, Navigate, Outlet} from 'react-router-dom';
export const Guard = ({component:Component, token:Token, routeRedirect,...rest}) => (
<Route {...rest} render={props => (
localStorage.getItem(Token) ?
<Outlet/> :
<Navigate to={{pathname:routeRedirect, state:{from:props.location}}} />
)}/>
);
And my PrivateRoute.js
import React from 'react';
import {Routes ,Route,Navigate} from 'react-router-dom';
import Profile from './components/pages/ProfileComponent';
export default function PrivateRoute(props) {
return (
<div>
{/*<Header/>*/}
<Routes>
<Route exact path={`${props.match.path}/view-profile`} element={<Profile/>}/>
<Route exact path={props.match.path} render={props=> (
<Navigate to={{ pathname: `${props.match.path}/view-profile` }} />
)} />
</Routes>
</div>
);
}
And I got this error : " [Guard] is not a component. All component children of must be a or <React.Fragment>"
I do some research and read this post but I don't understand how to solve my issue
Could you help me please ?
I use React v17.0.2, react-router v6.2.2 and react-router-dom v6.2.2