【React】React-router路由

简介: React-router路由

路由的定义

路由是根据不同的url地址展示不同的内容或页面

注: 一个针对react设计的路由解决方案,可以友好的帮助解决React components到URL之间的同步映射关系

路由安装

npm i react-router-dom@5

路由的使用

导入路由

import {HashRouter as Router,Redirect,Route,Switch} from 'react-router-dom'

注:路由模式有HashRouter和BrowserRouter两种模式,其中BrowserRouter的路径没有#,样式好看,真正朝后端发请求,后端若没有对应的路径去处理路径,就会404

定义路由

<Route path="/films" component={Films} />

其中path是对应的路由路径,component是与路由对应的组件

Switch的使用

<Switch>
                <Route path="/films" component={Films} />
                <Route path="/cinemas" component={Cinemas} />
                <Route path="/center" component={Center} />
</Switch>

Switch的功能与switch语句功能一样,对传入的路由进行匹配选择,当匹配到一个path后将不再继续进行匹配

Rediret的使用

对于匹配不到的路径,可以使用Redirect进行重定向,直接调转到某个指定页面

<Redirect from='/' to='/films' exact />

注意:Redirect的的使用要与Switch结合使用,且在Switch中写在Route之后

嵌套路由

在父组件中定义路由

<Switch>
    <Route path="/films/nowplaying" component={nowplaying} />
    <Route path="/films/coming" component={coming}/>
    <Route path="/films/comingsoon" component={comingsoon} />
    <Redirect from='/films' to='/films/nowplaying'/>
</Switch>

路由跳转模式

声明式导航

<NavLink to={"/films"} activeClassName="active">电影</NavLink>

编程式导航

//方式一--通过父组件传的props参数
props.history.push ('/films')
//方式二--引入useHistory
import { useHistory } from 'react-router-dom'
 history.push(`/films`)

路由传参

路由传参共有三种模式–动态路由传参,query传参,state传参

动态路由传参

直接将传入的参数放置在路径中

history.push(`/detail/${id}`)

子组件获取页面id

props.match.params.myid

query传参

将传入的参数赋值到query参数中,自动拼接

history.push({pathname:"/detail",query:id})

子页面获取页面id

props.location.query

state传参

与query参数相似,将传入的参数赋值到state参数中,自动拼接

history.push({pathname:"/detail",state:{myid:id}})

子页面获取页面id

props.location.state.myid

路由拦截

对于某些页面的跳转需要用户满足一些条件,可以通过路由拦截阻止未满足的用户跳转到指定页面

<Route path='/center' render={(props)=>{
    return isAuth()? <Center {...props}></Center>:<Redirect to='/login' />
                }} />

反向代理

Reactke通过Proxy进行反向代理,解决跨域问题

https://facebook.github.io/create-react-app/docs/proxying-api-requests-in-development

安装包下载

npm install http-proxy-middleware --save

在src文件夹下建立setuoProxy.js文件

文件内容如下

const { createProxyMiddleware } = require('http-proxy-middleware');
module.exports = function(app) {
  app.use(
    '/ajax',  //转发请求--接口地址带有/ajax前缀的接口路径才会被转发给target
    createProxyMiddleware({
      target: 'https://i.maoyan.com',   //target是api服务器访问的地址
      changeOrigin: true,
    })
  );
};

注:可配置多个代理

css module

在React中每个组件的css样式会统一出现在主页面,为避免样式覆盖,css module默认局部样式

使用步骤:

  • css文件命名后缀改为.module.css
  • 在组件中引入并可命名为style
import style from './css/Film.module.css'
  • 在对应的元素中使用该类名
<div className={style.film}>

注意:类名可进行字符串拼接

<div className={style.film +" aaa"}>

在css module文件中定义全局样式

:global(#kerwin){
  color:red
}

欢迎各位评论指正,期待你们的支持✨✨✨


目录
相关文章
|
3月前
|
前端开发 JavaScript
React项目路由懒加载lazy、Suspense,使第一次打开项目页面变快
本文介绍了在React项目中实现路由懒加载的方法,使用React提供的`lazy`和`Suspense`来优化项目首次加载的速度。通过将路由组件改为懒加载的方式,可以显著减少初始包的大小,从而加快首次加载速度。文章还展示了如何使用`Suspense`组件包裹`Switch`来实现懒加载过程中的fallback效果,并提供了使用前后的加载时间对比,说明了懒加载对性能的提升作用。
243 2
React项目路由懒加载lazy、Suspense,使第一次打开项目页面变快
|
1月前
|
前端开发 API UED
React 路由守卫 Guarded Routes
【10月更文挑战第26天】本文介绍了 React 中的路由守卫(Guarded Routes),使用 `react-router-dom` 实现权限验证、登录验证和数据预加载等场景。通过创建 `AuthContext` 管理认证状态,实现 `PrivateRoute` 组件进行路由保护,并在 `App.js` 中使用。文章还讨论了常见问题和易错点,提供了处理异步操作的示例,帮助开发者提升应用的安全性和用户体验。
53 1
|
4月前
|
移动开发 资源调度 前端开发
介绍React路由模式
【8月更文挑战第10天】介绍React路由模式
63 12
|
1月前
|
前端开发 安全 网络安全
React——路由Route
React——路由Route
35 2
React——路由Route
|
2月前
|
资源调度 前端开发 测试技术
React Router 路由管理
【10月更文挑战第10天】本文介绍了 React Router,一个在 React 应用中管理路由的强大工具。内容涵盖基本概念、安装与使用方法、常见问题及解决方案,如路由嵌套、动态路由和路由守卫等,并提供代码示例。通过学习本文,开发者可以更高效地使用 React Router,提升应用的导航体验和安全性。
311 19
|
2月前
|
前端开发 网络架构
React 路由
10月更文挑战第11天
37 2
|
2月前
|
前端开发 JavaScript 网络架构
实现动态路由与状态管理的SPA——使用React Router与Redux
【10月更文挑战第1天】实现动态路由与状态管理的SPA——使用React Router与Redux
46 1
|
3月前
|
前端开发 Python
React技术栈-React路由插件之自定义组件标签
关于React技术栈中React路由插件自定义组件标签的教程。
65 4
React技术栈-React路由插件之自定义组件标签
|
3月前
|
移动开发 前端开发 应用服务中间件
React两种路由模式的实现原理
React两种路由模式的实现原理
106 3
|
3月前
|
前端开发 程序员 API
React技术栈-React路由插件之react-router的基本使用
这篇博客介绍了React路由插件react-router的基本使用,包括其概念、API、以及如何通过实战案例在React应用中实现SPA(单页Web应用)的路由管理。
85 9