一起来看React(路由守卫)

原文链接:https://juejin.im/post/5d005664f265da1bc64bba64

我们在很多时候都会接触到路由守卫--->无论是不是做(代码小子)的人

我们在浏览各网页时会看到头部的网址,如:

img

当我们在逛:淘宝/天猫/京东 这一类的网站时我们自定义输入地址时,我们应该先登录,如果没登录我们应该跳转到指定页面

路由守卫:

自定义界面的前置路由守卫,当用户点击要进入r组件时,路由守卫发起判断,如果条件满足则进入,否则跳转至pathname组件
复制代码

在实现路由守卫时:我们首先要安装

npm install react-router-dom --save-dev //这里可以使用cnpm代替
复制代码

定义私有开关isLogin为假,在PrivateRoute中使用 然后我们去页面触发

import React from 'react'; 
import {Redirect,Route} from 'react-router-dom';
const PrivateRoute = ({ component: Component, ...rest }) => (
    <Route
        {...rest}
        render={props =>
            Boolean(sessionStorage.getItem("isLogin")) ?
            (
                <Component {...props} />
            )
             : (
                <Redirect
                    to={{
                        pathname: "/",
                        state: { from: props.location }
                    }}
                />
            )
        }
    />
);
export {
    PrivateRoute
}
复制代码

我们简单地做几个路由守卫----(路由跳转 one two three four 页并守卫)

我们在页面内

import One from "./one.js"
import Two from "./two.js"
import Three from "./three.js"
import Four from "./four.js"
复制代码

引入这四个页面,并且:

import {PrivateRoute} from "../router/PrivateRoute"
复制代码

引入我们之前书写的PrivateRoute,接下来我们书写我们的点击事件

<ul>
<li onClick={this.goto.bind(this,"/Main/one")}>第一个</li>
<li onClick={this.goto.bind(this,"/Main/two")}>第二个</li>
<li onClick={this.goto.bind(this,"/Main/three")}>第三个</li>
<li onClick={this.goto.bind(this,"/Main/four")}>第四个</li>
</ul>
复制代码

当我们点击我们的N个时都会触发我们的goto(跳转)函数

goto(i){
    sessionStorage.setItem("isLogin",true)
    this.props.history.push(i)
}
复制代码

goto为我们的函数,设置的Item内的IsLogin为true是代表我们可以进行跳转,如果Islogin==""的话我们将无法进行跳转。

---->isLogin主要是:路由守卫发起判断,如果条件满足则进入,否则跳转至pathname组件

当以上都满足时我们要用Swithch和内部的PrivateRoute进行操作

<Switch>
<PrivateRoute path="/Main/one" component={One} ></PrivateRoute>
<PrivateRoute path="/Main/two" component={Two} ></PrivateRoute>
<PrivateRoute path="/Main/three" component={Three} ></PrivateRoute>
<PrivateRoute path="/Main/four" component={Four} ></PrivateRoute>
<Route  path="/" component={One} />
</Switch>  
复制代码

Switch 是唯一的因为它仅仅只会渲染一个路径

转载于:https://www.cnblogs.com/chengquanomg/p/11553770.html

React 路由守卫是一种在 React 应用中对路由进行保护和控制访问的机制。它可以在用户访问特定路由之前验证用户身份、权限或其他条件,并根据结果决定是否允许用户访问该路由。 在 React 中,常见的使用路由守卫的库有 react-router 和 react-router-dom。以下是使用 react-router-dom 的例子: 1. 首先,确保已经安装了 react-router-dom: ``` npm install react-router-dom ``` 2. 在你的应用中导入所需的模块: ```jsx import { BrowserRouter as Router, Route, Redirect } from 'react-router-dom'; ``` 3. 创建一个路由守卫组件,可以根据需要进行验证逻辑: ```jsx import React from 'react'; const PrivateRoute = ({ component: Component, isAuthenticated, ...rest }) => ( <Route {...rest} render={(props) => isAuthenticated ? ( <Component {...props} /> ) : ( <Redirect to="/login" /> ) } /> ); export default PrivateRoute; ``` 4. 在你的应用中定义路由,并使用路由守卫组件保护需要验证的路由: ```jsx import PrivateRoute from './PrivateRoute'; const App = () => { const isAuthenticated = // 根据你的实际情况确定用户是否已经验证 return ( <Router> <Switch> <Route path="/login" component={Login} /> <PrivateRoute path="/dashboard" component={Dashboard} isAuthenticated={isAuthenticated} /> </Switch> </Router> ); }; export default App; ``` 在上面的例子中,PrivateRoute 组件接收一个 `component` 属性,如果用户已经验证(`isAuthenticated` 为真),则渲染目标组件;否则,重定向到登录页面。 这只是一个简单的示例,你可以根据你的需求扩展和定制路由守卫的逻辑。希望对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值