react进入路由前获取数据_React中路由的基本使用

本文详细介绍了React中使用React-Router-DOM进行路由管理的基础操作,包括HashRouter、Route、Link组件的使用。通过一个仿官网的小案例展示了声明式路由的配置,同时提及了嵌套路由和带参数路由的实现方法,强调了在进入路由前获取数据的重要性。
摘要由CSDN通过智能技术生成

1、React路由介绍

现在我们来搞一搞React中的路由吧,别问我为什么这木喜欢用搞这个字,因为它比较深奥。

注意下面我们使用的是React-Router-DOM

React中的路由基本使用还是满简单的,零碎的小东西有点多,所以我直接把他们揉到一起做了一个小例子,代码我都写上注释了,应该挺简单易懂的

注意:以下所有操作均运行在搭好的React环境中

2、安装react-router-dom

在项目命令行中,执行cnpm install react-router-dom -S下载到生产环境的依赖中。

在组件中通过对象的解构方式去获取到react-router-dom内置组件,在     组件中,按需引入内置组件,在页面中进行使用:

3、关于组件的区别

HashRouter表示一个路由的根容器,将来所有的路由相关的东西,都要包裹在HashRouter里面,而且一个网站中,只需要使用一次HashRouter就好了;

Route表示一个路由规则,在Route上,有两个比较重要的属性,path,component

Link则表示一个路由的链接

4、仿照官网来个小案例(声明式路由)

4.1、创建一个新的Baokuo.js文件,并在index.js中导入这个路由文件

4.2、创建好要跳转的页面

4.3、在Baokuo.js文件中粘贴官方的第一个路由案例;

1 import React from 'react'

2 import Home from './penter/Home' //因为在一个文件夹下面创建的,所以要找到准确位置。

3 import Text from './penter/Text'

4 import Hellow from './penter/Hellow'

5 import {BrowserRouter,HashRouter,Route,Link} from 'react-router-dom'

6 import {Button,DatePicker,Icon} from 'antd';7 import 'antd/dist/antd.css'

8

9 classBaokuo extends React.Component{10

11 render(){12

13 return(14 //根容器

15

16

17

这是根目录

18


19 {/*链接*/}20 首页  21 新闻  22 关于我们

23


24 {/*路由规则,Route是配置路由的规则,同时也是一个占位符*/}25

26


27

28


29

30

31 {/*点击*/}32

33 );34 }35 }36

37 export default Baokuo;

1 总体的步骤分为三步:2 配置路由的容器Router;3 配置路由的连接LInk;4 配置路由填充的位置以及路径和组件的映射关系;:

5、嵌套路由

5.1、嵌套路由的步骤

a.在父路由的组件中配置子路由;

b.子路由中同样需要配置Link和Route;

6、带参数路由和获取参数;

方式:在路由的路径中通过[:参数名称]来进行传递,改参数在路由匹配的组件中通过[match.params.参数名]来获取。

英文官网案例:

React 设置路由守卫(Route Guards)可以用于在用户访问特定路由或执行特定操作之进行权限验证或其他逻辑控制。虽然 React 本身没有内置的路由守卫功能,但可以使用第三方库来实现类似的功能,比如 React Router。 React Router 是一个常用的路由库,它提供了一种简单的方式来管理应用程序的路由。要使用路由守卫,你可以借助 React Router 提供的 `Route` 组件和 `render` 属性来进行配置。 以下是一个基本的例子: ```jsx import React from 'react'; import { BrowserRouter as Router, Route, Redirect } from 'react-router-dom'; // 定义一个私有路由组件 const PrivateRoute = ({ component: Component, ...rest }) => { // 在这里执行你的权限验证逻辑 const isAuthenticated = true; // 假设用户已经登录 return ( <Route {...rest} render={props => isAuthenticated ? ( <Component {...props} /> ) : ( <Redirect to="/login" /> ) } /> ); }; // 定义其他页面组件 const Home = () => <div>Home</div>; const Dashboard = () => <div>Dashboard</div>; const Login = () => <div>Login</div>; const App = () => ( <Router> <Route path="/" exact component={Home} /> <Route path="/login" component={Login} /> <PrivateRoute path="/dashboard" component={Dashboard} /> </Router> ); export default App; ``` 在上面的代码,我们定义了一个私有路由组件 `PrivateRoute`,它接受一个 `component` 属性和其他属性。在 `PrivateRoute` 组件,我们可以执行权限验证逻辑(比如检查用户是否已登录),然后根据验证结果决定是渲染目标组件还是重定向到登录页面。 注意,上述示例使用的是 React Router v5 版本的 API。如果你使用的是其他版本的 React Router,可能需要稍作调整。 希望以上内容对你有所帮助!如有任何疑问,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值