我怎样才能修复反应中的路线错误

2023-12-01

我收到此警告,除了 App.js 中包含“默认页面内容}”的“/”之外,我看不到我的路线。我如何重写包含其他路线的代码?

位置“/admin”处的匹配叶路由没有元素。这意味着默认情况下它将呈现一个空值,从而导致“空”页面

我在用着 : “反应”:“^17.0.2”, "react-dom": "^17.0.2", "react-router-dom": "^6.0.2",

App.js

import React from 'react'
import ReactDOM from 'react-dom'
import { BrowserRouter as Router, Switch,Routes, Route,Swit } from 'react-router-dom';

import MasterLayout from '../src/assets/layouts/admin/MasterLayout'

function App() {
  return (
    <div className="App">
 <Router>
      
        <Routes>
        <Route path="/" element={<div>Default Page Content</div>}/>
        <Route  path="/admin" name="Admin" render={(props) => <MasterLayout {...props} />}/>  
        </Routes>
      
       
    </Router>

    </div>
  );
}

export default App;

Route.js

import Dashboard from '../assets/components/admin/Dashboard';
import Profile from '../assets/components/admin/Profile';


const routes = [
{path:'/admin',exact:true,name:'Admin'},
{path:'/admin/dashboard',exact:true,name:'Dashboard',component: Dashboard},
{path:'/admin/profile',exact:true,name:'Profile',component: Profile},

];


export default routes;

MasterLayout.js

import React from 'react';
import { Navigate } from 'react-router-dom';

import { BrowserRouter as Router, Switch, Routes, Route, Swit } from 'react-router-dom';

import '../../admin/js/scripts.js'
import '../../admin/css/styles.css'

import Navbar from './Navbar.js';
import Sidebar from './Sidebar.js';
import Footer from './Footer.js';
import routes from '../../../routes/routes';



const MasterLayout = () => {

    return (
        <div className="sb-nav-fixed">
            <Navbar />
            <div id="layoutSidenav">
                <div id="layoutSidenav_nav">
                    <Sidebar />
                </div>
                <div id="layoutSidenav_content">
                    <main>
                    <Router>
                        <Routes>
                            {routes.map((route, idx) => {

                                return (

                                    route.component && (

                                        <Route

                                            key={idx}
                                            path={route.path}
                                            exact={route.exact}
                                            name={route.name}
                                            render={(props) => (
                                                <route.component {...props} />
                                            )}
                                        />
                                    )

                                )

                            })}
                        </Routes>
                        </Router>
                        <Navigate from="/admin" to="/admin/dashboard"/>

                    </main>

                    <Footer />
                </div>
            </div>

        </div>



    )
}

export default MasterLayout;

#仪表板.js#

import React from 'react'

function Dashboard() {

    return (
        <h1>I am dashboard</h1>
    );

}

export default Dashboard;

Profile.js

import React from 'react'

function Profile() {

    return (
        <h1>I am Profile</h1>
    );

}

export default Profile;

Index.js

import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';
import reportWebVitals from './reportWebVitals';

ReactDOM.render(
  <React.StrictMode>
    <App/>
  </React.StrictMode>,
  document.getElementById('root')
);

// If you want to start measuring performance in your app, pass a function
// to log results (for example: reportWebVitals(console.log))
// or send to an analytics endpoint. Learn more: 
reportWebVitals();

React Router 6 为我们提供了一个非常强大的功能(嵌套路由)。这使我们能够在浏览器中更改不同路由/链接的 URL,而不是替换整个页面,仅替换新选项卡/链接的内容。 为了在这里使用嵌套路由,您可以简单地删除 Routes/routes.js 文件,也从 App.js 中删除导入语句,并将 App.js 文件更改为以下内容

import React from 'react';
import {BrowserRouter as Router, Routes, Route} from 'react-router-dom';

import MasterLayout from './layouts/admin/MasterLayout';
import Dashboard from './components/admin/Dashboard';
import Profile from './components/admin/Profile';

    function App() {
  return (
    <div className="App">
      <Router>
        <Routes>
        <Route path="/admin" element={<MasterLayout />} > 
        <Route path='/admin/dashboard' element={<Dashboard />}/>
        <Route path='/admin/profile' element={<Profile />}/>
        </Route>
        </Routes>
      </Router>
    </div>
  );
}

export default App;

然后按以下顺序将 Outlet 添加到 MasterLayout.js 文件中,以使其能够渲染并用匹配的嵌套路由内容替换其内容。

import React from 'react';
import {Outlet, Navigate} from 'react-router-dom';
import '../../assets/admin/css/styles.css';
import '../../assets/admin/js/scripts.js';

import Footer from './Footer';
import Navbar from './Navbar';
import Sidebar from './Sidebar';



const MasterLayout = ()=>{
    return (
        <div className="sb-nav-fixed">
            <Navbar/>

            <div id="layoutSidenav">
                <div id="layoutSidenav_nav">
                    <Sidebar/>
                </div>

                <div id="layoutSidenav_content">
                <main>
                    <Outlet/>
                    <Navigate from="admin" to="/admin/dashboard"/> 

                </main>
                <Footer/>
                </div>
            </div>    
        </div>

    );
}

export default MasterLayout;

我希望这对我们这些使用 React-router-dom v-6 及以上版本的人有所帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我怎样才能修复反应中的路线错误 的相关文章

随机推荐

  • Python“使用错误的参数类型调用”错误

    我明白为什么我会收到此错误 它正在寻找我的对象作为参数 并接收字符串值 但我很困惑 不知道解决方案是什么 以下代码片段只是尝试运行此命令 self buttonGroup addButton self ui m001 x 次数 num 0
  • 如何在 Struts 2 中使用 DispatcherListener

    有一个界面DispatcherListener在Struts2中 文档说 一个接口来标记那些想要在init and destroy of a Dispatcher 但是这个接口怎么用呢 如果我创建一个实现这个接口的类 我应该如何将它配置到S
  • 我如何使用空手道测试以 AVRO 格式给出响应的其余端点?

    Karate 对于验证我们提供 json 响应的其余 api 非常有帮助 现在我们有了 api 它可以为我们提供 avro 格式的响应 可能还需要以 avro 格式发送有效负载 我如何使用空手道测试以 AVRO 格式给出响应的其余端点 有什
  • Python/Pandas:如果列有多个值,则转换为列表中具有多个值的单行

    在我的数据框中 我有很多相同的实例AutoNumber有不同的KeyValue String 我想将这些实例转换为单行 其中KeyValue String是由多个唯一值组成的列表 AutoNumber KeyValue String Ref
  • 如何连续向下滚动页面直到找到某个元素? Python 硒

    我对 Linkedin 技能部分的加载更多按钮感到困惑 我在查找按钮的 xpath 时收到此错误 selenium common exceptions NoSuchElementException Message no such eleme
  • xmlHttpRequest abort() 方法不会关闭 Internet Explorer 中的连接

    我有多个xmlHttpRequest在我的页面上 我正在尝试调用abort 对他们所有人的方法 在 FF 中效果很好 另一方面 IE 却没有做任何该死的事情 连接不会关闭 并且在请求完成之前我无法导航到另一个页面 这是什么 为什么 IE 不
  • 从 Angular 5 Universal 获取域名始终返回 127.0.0.1

    我在 Angular 5 应用程序的服务器端渲染方面遇到问题 我需要域来创建正确的链接 应用程序在不同的环境中使用 并且为每个端点创建几个包是个坏主意 所以我尝试使用堆栈中的选项 但我总是得到 127 0 0 1 4000 作为域 主机 我
  • 快速执行命令后获取终端输出

    我使用以下代码在终端中运行一些命令 system the command here 在我想知道运行这个命令的结果是什么之后 例如如果我跑 system git status 我想阅读有关我的存储库中更改的实际信息 有什么办法可以快速做到这一
  • 链表删除节点、简单链表

    我正在尝试实现一个从链表中删除节点的函数 到目前为止 我只能删除列表的第一个节点 3 我尝试从delete转到for循环 我以为内存没有分配好 我已经挣扎了几天 我不明白 请帮助我一点 这是我从大学收到的主题 include
  • 如何在 ASP.NET MVC 中禁用路由值的绑定?

    据我所知 ValueProviderDictionary 从 3 个地方获取绑定值 来自邮寄表格 来自路线值 来自查询字符串 我希望能够禁用第二个和第三个选项 我在这里看到的唯一解决方案是创建我自己的自定义 ValueProvider 复制
  • 网络浏览器打印

    Hi我正在使用 C WPF webbrowser 控件在本地计算机中显示 html 文件 我通过执行 webbrowser 控件的打印命令向我的应用程序添加了打印功能 但 Internet Explorer 的默认行为是在屏幕底部打印文件
  • ggplot2 PDF 输出中的 Unicode 字符

    如何在使用 ggplot2 创建的 PDF 绘图中使用 Unicode 字符作为标签 标题和类似内容 考虑以下示例 library ggplot2 qplot Sepal Length Petal Length data iris main
  • Python PyQT:如何从工作线程调用 GUI 函数?

    我有一个 pyqt gui 并调用一个长进程 ffmpeg 我将其放在一个单独的线程上以不阻塞 gui 然后 我想在较长命令列表中的一个命令完成时更新进度栏 问题是 我无法在工作线程之外调用 gui 线程中的函数 所以我让在工作线程中运行一
  • JCAPS 地狱小盒子

    Has anyone out there in SO land had to deal with this when you go to build a new deployment profile in JCAPS you have qu
  • avcodec_encode_video2 时出现分段错误

    我在尝试将 AVFrame 编码到数据包时遇到一些问题 在阅读整个代码之前 输入的东西正在工作 我测试了它 输出内容来自示例here 我认为是有问题的 但分段错误发生在接近末尾的循环中 这是我的简化代码 void nmain input s
  • 如何从列表中查找对象

    我使用以下程序创建从网站获取的城市列表 现在我想从我创建的列表中查找城市名称 参数 我怎么做 换句话说 如何从列表中找到对象 我试过 listOfCities find city 我收到错误 因为找不到属性 find def weather
  • 依赖于 package.json 中使用 git URL 的分支或标签?

    假设我已经分叉了一个带有错误修复程序的节点模块 并且我想在功能分支上使用我的修复版本 直到错误修复程序合并并发布 我如何在中引用我的固定版本dependencies of my package json 解决方案1 来自npm docs 使
  • 无法在 javafx 8 中加载 css 文件

    Scene listenMenu new Scene root 250 272 listenMenu getStylesheets add styles css 这对于我加载 css 文件总是有效 但是在一次小的 IntelliJ 更新之后
  • Parallel.ForEach - 访问修改后的闭包是否适用?

    我读过许多有关访问修改的闭包的其他问题 所以我了解基本原理 尽管如此 我还是无法判断 是吗 Parallel ForEach有同样的问题吗 以下面的代码片段为例 我重新计算了上周用户的使用情况统计数据 var startTime DateT
  • 我怎样才能修复反应中的路线错误

    我收到此警告 除了 App js 中包含 默认页面内容 的 之外 我看不到我的路线 我如何重写包含其他路线的代码 位置 admin 处的匹配叶路由没有元素 这意味着默认情况下它将呈现一个空值 从而导致 空 页面 我在用着 反应 17 0 2