关于React路由

React路由精讲

我对React中路由理解的几个观点:

(1):react-router和react-router-dom有什么区别?
(2):react路由的基本使用
(3):嵌套路由
(4):重定向
(5):结语

1.react-router和react-router-dom有什么区别?


相信很多刚学react的朋友都会和我一样,在使用react来创建路由的时候,发现官网上写的是

 import *** from 'react-router';

然后百度看了很多博客文章 ,发现是

import *** from 'react-router-dom';

那么这两个玩意儿到底是什么关系呢?

  • react-router:提供了router的核心api。如Router、Route、Switch等,但没有提供有关dom操作进行路由跳转的api;
  • react-router-dom:提供了BrowserRouter、Route、Link等api,可以通过dom操作触发事件控制路由。

那么我们要怎么用呢?
首先,react-router-dom里包含了react-router的依赖,因此我们在安装的时候只需要安装后者即可。

npm install react-router-dom --save

2.React路由的基础使用


1.新建一个Router.js文件,至于在哪里新建,你喜欢就好。

//引入react jsx写法的必须
import React from 'react'; 
//引入需要用到的页面组件 
import Home from './pages/home';
import About from './pages/about';
//引入一些模块
import { BrowserRouter as Router, Route} from "react-router-dom";

function router(){
return (
<Router>
    <Route path="/home" component={Home} />
    <Route path="/about" component={About} />
</Router>);
}

export default router;

这里是home组件

 //home.js
import React, { Component } from 'react';

export default class Home extends Component {
  render() {
    return (<h1>
      欢迎,这里是Home
    </h1>)
  }
}

这里是about组件

//about.js
import React, { Component } from 'react';

export default class About extends Component {
  render() {
    return (<h1>
      欢迎,这里是About
    </h1>)
  }
}

2.根据我们上面写的路由,可知页面结构如下

|
|--home
|--about
//那么localhost:3000/home  就会渲染home组件(如果你的项目是react脚手架默认生成的项目)
//localhost:3000/about 就会渲染about组件

3.然后我们在app.js中引入这个文件即可

import Router from './Router'
class App extends React.Component {
render(){
return (
  <Router />
);
}
}

3.嵌套路由


当我们需要页面的局部变换的时候,就需要用到这个了。比如说标题栏不变,内容根据路由地址引入不同的模块~

3.1在需要嵌套路由的地方,加上:

{this.props.children} //这里就是嵌套路由展示的地方

比如我们现在要给about加一个子路由other
那么我们首先需要改写about.js文件

//about.js
import React, { Component } from 'react';

export default class About extends Component {
  render() {
    return (<h1>
      欢迎,这里是About
      {this.props.children}  //这里就是嵌套路由展示的地方
    </h1>)
  }
}

3.2然后再更改router.js路由文件

前面的引入就省略了,查看上一章节即可/新引入一个ohter组件,用于渲染嵌套路由,other内容和前面的home.js一样

import Ohter from './pages/other';

function router(){
return (
<Router>
    <Route path="/home" component={Home} />
    <Route path="/about" render={()=>(
      <About>
        <Route path="/about/other" component={Other} />
      </About>
    )}>
    </Route>
</Router>);
}
export default router;

3.3然后就可以在浏览器看到效果啦,可以看到other组件嵌套在了about里面

4.重定向


有时候,我们需要把 "/" 重定向到我们的主页,这样用户直接输入"www.***.com"就可以了,而不用输入"www.***.com/home"。
//router.js
//需要import一下Redirect
import {Redirect} from "react-router-dom";

return (
<Router>
    <Route path="/home" component={Home} />
    <Route path="/" render={
      ()=> (
      <Redirect to="/home"/>)}>
    </Route>
</Router>);
}
export default router;

5.最后结语


我也是刚学react 没几天天,然后整这个路由整了好长才整明白,有些东西属实不太精通,一直引入一直报错,实属蛋疼。 如果有写错的地方,或者有更好的写法,欢迎给我留言~  谢谢~
基于遗传算法的新的异构分布式系统任务调度算法研究(Matlab代码实现)内容概要:本文档围绕基于遗传算法的异构分布式系统任务调度算法展开研究,重点介绍了一种结合遗传算法的新颖优化方法,并通过Matlab代码实现验证其在复杂调度问题中的有效性。文中还涵盖了多种智能优化算法在生产调度、经济调度、车间调度、无人机路径规划、微电网优化等领域的应用案例,展示了从理论建模到仿真实现的完整流程。此外,文档系统梳理了智能优化、机器学习、路径规划、电力系统管理等多个科研方向的技术体系与实际应用场景,强调“借力”工具与创新思维在科研中的重要性。; 适合人群:具备一定Matlab编程基础,从事智能优化、自动化、电力系统、控制工程等相关领域研究的研究生及科研人员,尤其适合正在开展调度优化、路径规划或算法改进类课题的研究者; 使用场景及目标:①学习遗传算法及其他智能优化算法(如粒子群、蜣螂优化、NSGA等)在任务调度中的设计与实现;②掌握Matlab/Simulink在科研仿真中的综合应用;③获取多领域(如微电网、无人机、车间调度)的算法复现与创新思路; 阅读建议:建议按目录顺序系统浏览,重点关注算法原理与代码实现的对应关系,结合提供的网盘资源下载完整代码进行调试与复现,同时注重从已有案例中提炼可迁移的科研方法与创新路径。
【微电网】【创新点】基于非支配排序的蜣螂优化算法NSDBO求解微电网多目标优化调度研究(Matlab代码实现)内容概要:本文提出了一种基于非支配排序的蜣螂优化算法(NSDBO),用于求解微电网多目标优化调度问题。该方法结合非支配排序机制,提升了传统蜣螂优化算法在处理多目标问题时的收敛性分布性,有效解决了微电网调度中经济成本、碳排放、能源利用率等多个相互冲突目标的优化难题。研究构建了包含风、光、储能等多种分布式能源的微电网模型,并通过Matlab代码实现算法仿真,验证了NSDBO在寻找帕累托最优解集方面的优越性能,相较于其他多目标优化算法表现出更强的搜索能力稳定性。; 适合人群:具备一定电力系统或优化算法基础,从事新能源、微电网、智能优化等相关领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①应用于微电网能量管理系统的多目标优化调度设计;②作为新型智能优化算法的研究与改进基础,用于解决复杂的多目标工程优化问题;③帮助理解非支配排序机制在进化算法中的集成方法及其在实际系统中的仿真实现。; 阅读建议:建议读者结合Matlab代码深入理解算法实现细节,重点关注非支配排序、拥挤度计算蜣螂行为模拟的结合方式,并可通过替换目标函数或系统参数进行扩展实验,以掌握算法的适应性与调参技巧。
<think>好的,我现在需要帮助用户找到关于React路由配置的教程学习资料,特别是他们提到了“菜鸟教程”。首先,我应该回忆一下React路由的基本知识,以及常用的配置方法。 用户提供的引用内容中提到了几个关键点:引用[1]说明配置路由的整体思路是在路由文件中定义路由,然后导入到App.js,再导入到index.js。引用[3]指出需要使用双标签<Routes>包裹<Route>,每个Route需要指定pathelement属性。这些信息都是React Router v6的典型用法,因为v6版本引入了<Routes>组件来替代之前的<Switch>。 接下来,我需要确认菜鸟教程是否有相关的React路由内容。菜鸟教程(runoob.com)确实有React相关的教程,但可能不是最详尽的。不过用户可能更倾向于寻找类似菜鸟教程风格的入门指南,所以应该推荐一些适合初学者的资源,比如官方文档、社区教程或视频教程。 另外,用户可能对具体的配置步骤有疑问,例如如何安装react-router-dom,如何定义路由,如何处理嵌套路由等。需要分步骤解释,确保结构清晰,符合用户要求的“逐步解决问题”。 还要注意引用中提到的必须导入ReactComponent,这可能涉及到旧版本的React,但现在使用函数组件更为常见,尤其是在React Router v6中。需要指出版本差异,避免用户混淆。 最后,生成的相关问题需要围绕React路由的常见疑惑,比如安装、基本配置、动态路由、嵌套路由404页面处理,这些都是初学者常遇到的问题。</think>关于React路由配置的学习资料,以下是详细教程关键步骤说明: ### 一、React路由配置基础步骤 1. **安装react-router-dom** ```bash npm install react-router-dom@6 ``` 2. **创建路由配置文件** ```javascript // src/Router.js import { createBrowserRouter } from 'react-router-dom'; import Home from './pages/Home'; import About from './pages/About'; const router = createBrowserRouter([ { path: "/", element: <Home />, }, { path: "/about", element: <About />, } ]); export default router; ``` 3. **在App.js中绑定路由** ```jsx // src/App.js import { RouterProvider } from 'react-router-dom'; import router from './Router'; function App() { return <RouterProvider router={router} />; } ``` 4. **在入口文件index.js中渲染** ```jsx // src/index.js import ReactDOM from 'react-dom/client'; import App from './App'; const root = ReactDOM.createRoot(document.getElementById('root')); root.render(<App />); ``` ### 二、关键特性说明 1. **路由嵌套**:使用`children`属性实现 ```javascript { path: "/user", element: <UserLayout />, children: [ { path: "profile", element: <Profile /> }, { path: "settings", element: <Settings /> } ] } ``` 2. **动态路由**: ```javascript { path: "/product/:id", element: <ProductDetail /> } ``` ### 三、推荐学习资源 1. **官方文档**(最新最权威): [React Router官方教程](https://reactrouter.com/en/main/start/tutorial) 2. **中文入门教程**: [菜鸟教程React Router部分](https://www.runoob.com/react/react-router.html) 3. **视频教程推荐**: B站《React Router v6 新特性详解》 ️需注意:v6版本与v5有重大变更,建议学习最新版本[^3] 4. **实战项目**: GitHub搜索"react-router-demo"可找到多个带路由配置的完整项目
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值