当前位置: 首页 > 知识库问答 >
问题:

javascript - React 中如何正确的将多个路由打包给外部调用?

刁俊人
2024-01-15

我在用 react 写一个网页项目,其结构大概如下

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

路由用的是 react-router-dom v6.0+。在路由文件夹 routes 中,其中 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;

而 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;

在 app.jsx 中引入如下

import React from 'react';import AllRoutes from './routes';import './App.scss'function App() {  return (    <div className="App">      <AllRoutes />          </div>  );}export default App;

我现在遇到的问题是总是提示错误,错误信息是

[AuthRoutes] is not a component. All component children of must be a or <React.Fragment>

我做了一些尝试

  1. 将 authRoutes.jsx 文件中的 <></> 改成了 <React.Fragment></React.Fragment>,还是同样的错误。
  2. 同样,将它们改成 <Routes>,也是同样的错误。
  3. <Route path="/auth/login" element={<Login />} /> 改成了 <Route path="/auth/login" element={ Login } />,还是同样的错误。
  4. 将 routes/index.jsx 中的 <AuthRoutes /> 改成 <Route path="/" element={<AuthRoutes />} />,错误没了,但访问 /auth/login,提示 /auth/login 路径并不存在。

共有1个答案

东方乐
2024-01-15

<AuthRoutes /> 改成 {AuthRoutes()} 就行了

 类似资料:
  • 在我的React项目中,我有: 没有标题的登录组件 问题:我应该如何构建我的路由器从登录页面开始,当我点击登录时,路由器会把我带到仪表板?

  • 我需要多个嵌套路由 我用的是react-router-dom的v4 我有我的 我需要组件渲染成这样 Home组件包含Page1、Page2和Page3组件共有的标题组件,但不存在于Login和About中。 我的js代码是这样读的 我希望登录组件只显示在 /login当我请求 /page1、 /page2、 /page3时,它们应该分别包含主页组件和该页面的内容。 取而代之的是呈现的登录组件,在该

  • 问题内容: 我正在尝试找出在我的express.js路由之间传递mysql连接(使用node- mysql)的最佳方法。我正在动态添加每个路由(在路由中为每个文件循环使用),这意味着我不能只是将连接传递给需要它的路由。我要么需要将其传递到每条路线,要么根本不需要传递。我不喜欢将其传递给不需要它的想法,因此我创建了一个dbConnection.js,可以根据需要单独导入路由。问题是我认为我做的不正确

  • 我正在使用React和React路由器尝试将我的组件链接到一个项目中。我想从主页(当前组件)链接一张图片到另一个组件。 目前我可以点击图片,它有点像一个链接(有时点击后变成蓝色),尽管它没有链接到其他组件,没有错误显示,网址栏中没有任何变化。什么都没发生。 有什么想法吗?这是我的代码: 代码错误:react dom。发展js:17117上述错误发生在组件中:img(由Home创建)中div(由Ho

  • 我是React新手,我正试图通过React路由器的道具,通过应用程序(父)将数据从子组件传递到子组件。据我所知,你必须将道具从一个孩子回调到另一个应用,然后再回调到孩子。 主要的问题是如何从孩子那里得到道具。js到应用程序。js与回调和反应路由器。 应用程序。js 小孩js

  • 我这样做已经有一段时间了,但我相信我做的每件事都是正确的。 这是我的设置; < li >弹性豆茎环境- big-ugly-aws-url.com < li >注册商的DNS <李> < ul > < Li > something.example.com指向big-ugly-aws-url.com的CNAME设置 设置 example.com 的托管区域 添加了指向别名的记录 奇怪的是,所有这些组合