Маршруты маршрутизатора React не соответствуют местоположению

Не знаете, почему это не работает? Все было импортировано правильно, поэтому я не уверен, почему я получаю следующее сообщение об ошибке в консоли:

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;
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
1
0
38
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Согласно документации 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, я рекомендую вам изучить пример, отправленный по ссылке выше.

Большое спасибо. Это сработало. ❤️. Я проверю эту ссылку сейчас.

Cody Codes 05.05.2022 17:09

Если ответ решил вашу проблему, отметьте ответ галочкой, чтобы люди могли видеть, что это решает проблему.

marius florescu 05.05.2022 17:27

Спасибо, Мариус. Я новичок в переполнении стека, я только что поставил галочку.

Cody Codes 05.05.2022 17:33

Хук useRoutes принимает конфигурацию маршрутов объект. Ваш код передает JSX. Это неправильное использование хука useRoutes.

useRoutes

Два метода рендеринга маршрутов:

  1. Используйте хук useRoutes с объектом конфигурации маршрутов.

    const routesConfig = [
      {
        path: "/",
        element: <Home />
      },
      {
        path: "/explore",
        element: <Explore />
      },
    ];
    
    const App = () => {
      const routes = useRoutes(routesConfig);
      return routes;
    };
    
  2. Визуализируйте JSX напрямую.

    const App = () => {
      return (
        <Routes>
          <Route path = "/" element = {<Home />} />
          <Route path = "/explore" element = {<Explore />}/>
        </Routes>
      );
    };
    

Другие вопросы по теме