React路由守卫

路由守卫其实就是我们的路由拦截,当我们有⼀些⻚⾯需要登录之后才有权限去访问这个时候我们的路由守卫就可以派上⽤场了
React⾥的路由守卫其实也是⼀个组件,最后返回的还是Route组件

实例:当没有登录时,“我的”压面不可见,显示登陆页面,只有点击登陆按钮后,才能跳转到“我的”页面

import React, {
    Component } from 'react'
import {
    BrowserRouter, Link, Route, Switch, Redirect } from 'react-router-dom'
import {
    Button } from 'antd'

function App() {
   
  return (
    <div>
      <ul>
        <li>
          <Link to="/">首页</Link>
        </li>
        <li>
          <Link to="/cart">购物车</Link>
        </li>
        <li>
          <Link to="/mine">我的</Link>
        </li>
      </ul>
      {
   /* Switch 只匹配一个路由 */}
      <Switch>
        {
   /* exact是确切匹配 */}
        <Route exact path="/" component={
   Home}></Route>
        <Route path="/cart" component={
   Cart}></Route>
        {
   /* <Route path="/mine" component={Mine}></Route> */}
        <RouteGuard path="/mine" component={
   Mine}></RouteGuard>
        <Route path="/login" component={
   Login}></Route>
        &l
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
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
发出的红包

打赏作者

uncle_Huang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值