Monday, May 20, 2024
 Popular · Latest · Hot · Upcoming
191
rated 0 times [  193] [ 2]  / answers: 1 / hits: 46001  / 3 Years ago, tue, november 23, 2021, 12:00:00

I am trying to navigate to "/quiz" when Start Quiz button is clicked.


However when I compile my code I am getting the following error on the website application: [Home] is not a <Route> component. All component children of <Routes> must be a <Route> or <React.Fragment>


I am new to react and if anyone can help me I would be grateful!


Here is my code for App.js:


import { BrowserRouter, Routes, Route } from "react-router-dom";
import Footer from "./components/Footer/Footer";
import Header from "./components/Header/Header";
import Home from "./Pages/Home/Home";
import Quiz from "./Pages/Quiz/Quiz";
import "./App.css";
function App() {
return (
<BrowserRouter>
<div className="App" style={{ backgroundImage: "url(./circle.jpg)" }}>
<Header />
<Routes>
<Route exact path="/" component={Home} />
<Route path="/quiz" component={Quiz} />
<Home />
</Routes>
</div>
<Footer />
</BrowserRouter>
);
}

export default App;


Here is my code for Home.js:


import { Button } from "@material-ui/core";
import { Container } from "@material-ui/core";
import { useNavigate } from "react-router-dom";
import "./Home.css";

const Home = () => {
const navigate = useNavigate();

const sendSubmit = () => {
navigate("/quiz");
};
return (
<Container className="content">
<h1 id="quiz-title">Phishing Quiz</h1>
<h2 class="question-text">
Do you think you can beat our phishing quiz?
</h2>
<p className="description">
{" "}
There are many social engineering attacks on internet however not all of
them are good enough to trick users. However there are some scams that
are identical to original websites and usually most of the users get
tricked by them.
</p>
<p className="description">
Do you think you are smart enough to handle these attacks?
</p>
<p className="description">
We are challenging you with our phishing quiz which will show you
examples of really good social engineering attacks on internet. We hope
you can pass!
</p>
<p>""</p>
<Button
variant="contained"
color="primary"
size="large"
onClick={sendSubmit}
>
Start Quiz
</Button>
</Container>
);
};

export default Home;


I only have empty code inside Quiz.js at the moment.


More From » reactjs

 Answers
4

first of all check the version of Your react router Dom .This error appear when you have V6 of react-router-dom. V6 have many groundbreaking change so try to read official documentation
check this out:https://reacttraining.com/blog/react-router-v6-pre/
Now for your question part
React router v6 introduce Routes


Introducing Routes



One of the most exciting changes in v6 is the
powerful new element. This is a pretty significant upgrade
from v5's element with some important new features including
relative routing and linking, automatic route ranking, and nested
routes and layouts.



  <BrowserRouter>
<div className="App" style={{ backgroundImage: "url(./circle.jpg)" }}>
<Header />
<Routes>
<Route exact path="/" element={<Home/>} />
<Route path="/quiz" element={<Quiz/>} />

</Routes>
</div>
<Footer />
</BrowserRouter>

Also check migration guide from v5 to v6
https://github.com/ReactTraining/react-router/blob/f59ee5488bc343cf3c957b7e0cc395ef5eb572d2/docs/advanced-guides/migrating-5-to-6.md#relative-routes-and-links


[#50117] Thursday, October 21, 2021, 3 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
dusty

Total Points: 739
Total Questions: 97
Total Answers: 85

Location: Angola
Member since Wed, Apr 13, 2022
2 Years ago
;