Не знаете, почему это не работает? Все было импортировано правильно, поэтому я не уверен, почему я получаю следующее сообщение об ошибке в консоли:
No routes matched location "/"
App.jsx
import './App.css';
import React from 'react';
import Home from './pages/Home';
import Explore from './pages/Explore';
import { BrowserRouter as Router, Routes, Route, useRoutes} from "react-router-dom";
// import { useState } from "react";
const App = () => {
let routes = useRoutes([
<Routes>
<Route path = "/" exact element = {<Home />} />
<Route path = "/explore" exact element = {<Explore />}/>
</Routes>
])
return routes;
}
const AppWrapper = () => {
return (
<Router>
<App />
</Router>
);
};
export default AppWrapper;
И домашний файл
import React from 'react';
import { useNavigate } from "react-router-dom";
const Home = () => {
const navigate = useNavigate();
return (
<div>
<div>
<button onClick = {() => {navigate("/explore");}}>
Explore page
</button>
<h1>Home page</h1>
</div>
</div>
);
}
export default Home;
Согласно документации useRoutes()
из здесь, вы неправильно используете хук.
Вы можете использовать традиционный способ маршрутизации с помощью react-router-dom
следующим образом:
const App = () => {
return (
<Routes>
<Route path = "/" exact element = {<Home />} />
<Route path = "/explore" exact element = {<Explore />} />
</Routes>
)
}
const AppWrapper = () => {
return (
<Router>
<App />
</Router>
)
}
Если вы действительно хотите использовать useRoutes
, я рекомендую вам изучить пример, отправленный по ссылке выше.
Если ответ решил вашу проблему, отметьте ответ галочкой, чтобы люди могли видеть, что это решает проблему.
Спасибо, Мариус. Я новичок в переполнении стека, я только что поставил галочку.
Хук useRoutes
принимает конфигурацию маршрутов объект. Ваш код передает JSX. Это неправильное использование хука useRoutes
.
Два метода рендеринга маршрутов:
Используйте хук useRoutes
с объектом конфигурации маршрутов.
const routesConfig = [
{
path: "/",
element: <Home />
},
{
path: "/explore",
element: <Explore />
},
];
const App = () => {
const routes = useRoutes(routesConfig);
return routes;
};
Визуализируйте JSX напрямую.
const App = () => {
return (
<Routes>
<Route path = "/" element = {<Home />} />
<Route path = "/explore" element = {<Explore />}/>
</Routes>
);
};
Большое спасибо. Это сработало. ❤️. Я проверю эту ссылку сейчас.