如何正确引用其他路由文件?

问题描述 投票:0回答:1

当我使用react和react-routerd-dom v6+创建路由时遇到问题。

我的项目树

my-react-app/
|-- src/
|   |-- components/
|   |-- pages/
|   |   |-- MainPage.jsx
|   |   |-- Auth/
|   |   |   |-- Login.jsx
|   |-- routes/
|   |   |-- authRoutes.jsx
|   |   |-- index.jsx
|   |-- App.jsx
|   |-- index.js
|-- public/
|   |-- index.html
|-- package.json

routes文件夹中,index.jsx的代码

import React from 'react';
import { BrowserRouter as Router, Route, Routes } from 'react-router-dom';
import MainPage from '../pages/MainPage';
import AuthRoutes from './authRoutes';

const AllRoutes = () => {
  return (
    <Router>
      <Routes>
        <Route path="/" element={<MainPage />} />
        <AuthRoutes />
      </Routes>
    </Router>
  );
}

export default AllRoutes;

以及authRoutes.jsx的代码

import React from 'react';
import { Route } from 'react-router-dom';
import Login from '../pages/Auth/Login';

const AuthRoutes = () => {
  return (
    <>
      <Route path="/auth/login" element={<Login />} />
    </>
  );
}

export default AuthRoutes;

错误信息是

[AuthRoutes] 不是组件。的所有子组件必须是 a 或

我尝试过的事情

  1. 在authRoutes.jsx中将

    <>
    </>
    更改为
    <React.Fragment>
    </React.Fragment>
    ,仍然是同样的错误。

  2. 在authRoutes.jsx中将

    <>
    </>
    更改为
    <Routes>
    </Routes>
    ,仍然是同样的错误。

  3. <Route path="/auth/login" element={<Login />} />
    改为
    <Route path="/auth/login" element={ Login } />
    ,还是同样的错误。

请帮我纠正代码中的错误。

reactjs react-router
1个回答
0
投票

问题解决了。

更新 authRoutes.jsx

import React from 'react';
import { Route, Routes } from 'react-router-dom';
import Login from '../pages/Auth/Login';

const AuthRoutes = () => {
  return (
    <Routes>
      <Route path="/auth/login" element={<Login />} />
    </Routes>
  );
}

export default AuthRoutes;

并更新index.jsx

import React from 'react';
import { BrowserRouter as Router, Route, Routes } from 'react-router-dom';
import MainPage from '../pages/MainPage';
import AuthRoutes from './authRoutes';

const AllRoutes = () => {
  return (
    <Router>
      <Routes>
        <Route path="/" element={<MainPage />} />
        <Route path="*" element={<AuthRoutes />} />
      </Routes>
    </Router>
  );
}

export default AllRoutes;

现在可以了。但这个解决方案给了我另一个问题。

authRoutes.jsx 返回

<Routes>
 <Route path="/auth/login" element={<Login />} />
</Routes>

被index.jsx引用时,index.jsx返回

<Router>
 <Routes>
   <Route path="/" element={<MainPage />} />
   <Route path="*" element={<AuthRoutes />} />
 </Routes>
</Router>

它的结构是这样的

<Router>
 <Routes>
  <Route>
  <Routes>
   <Route>
  </Routes>
 </Routes>
</Router>

看起来很奇怪。

© www.soinside.com 2019 - 2024. All rights reserved.