当前位置: 首页 > 知识库问答 >
问题:

前端 - React中怎么实现类似Vue中的路由守卫功能?

谭学名
2024-06-03

有没有react hooks处理方法?可以直接监听到路由跳转的变化,然后进行判断处理?比如用户如果未登录访问某个页面,跳转到登录页。

共有1个答案

劳烨
2024-06-03
import React, { useEffect } from 'react';import { useHistory, useLocation } from 'react-router-dom';// 检查用户是否登录const useAuth = () => {  const getUser = () => {    // 从localStorage, sessionStorage, 或者 redux store 等获取用户登录信息    return localStorage.getItem('user');  }  return {    isLogged: !!getUser(),  };};const useRouteGuard = () => {  const history = useHistory();  const location = useLocation();  const { isLogged } = useAuth();  useEffect(() => {       const onRouteChange = () => {      if (!isLogged && location.pathname !== '/login') {        history.push('/login');      }    };    onRouteChange();    // 加location.pathname依赖  }, [history, location.pathname, isLogged]);};// 在你的组件里用这个Hookconst App = () => {  useRouteGuard();  // 启用路由守卫  return (    <Router>      <Switch>        <Route path="/login">          <LoginPage />        </EventPage>        <Route path="/dashboard">          <DashboardPage />        </Route>        <Route path="/profile">          <ProfilePage />        </Route>        <Route path="/">          <HomePage />        </Route>      </Switch>    </Router>  );};
 类似资料:
  • 本文向大家介绍vue2.0 实现导航守卫(路由守卫),包括了vue2.0 实现导航守卫(路由守卫)的使用技巧和注意事项,需要的朋友参考一下 路由跳转前做一些验证,比如登录验证,是网站中的普遍需求。 对此,vue-route 提供的 beforeRouteUpdate 可以方便地实现导航守卫(navigation-guards)。 导航守卫(navigation-guards)这个名字,听起来怪怪的

  • 本文向大家介绍vue2.0 实现导航守卫的具体用法(路由守卫),包括了vue2.0 实现导航守卫的具体用法(路由守卫)的使用技巧和注意事项,需要的朋友参考一下 路由跳转前做一些验证,比如登录验证,是网站中的普遍需求。 对此,vue-route 提供的 beforeRouteUpdate 可以方便地实现导航守卫(navigation-guards)。 导航守卫(navigation-guards)这

  • 本文向大家介绍vue路由守卫,限制前端页面访问权限的例子,包括了vue路由守卫,限制前端页面访问权限的例子的使用技巧和注意事项,需要的朋友参考一下 今天给大家写一篇关于vue校验登录状态,如果是非法登录就跳转到登录页面的逻辑 首先需要写一个路由守卫,它的原理是每次路由发生变化时触发具体写法如下: beforeEach函数有三个参数: to:即将进入的路由对象 from:当前导航即将离开的路由 ne

  • 本文向大家介绍详解Angular路由之路由守卫,包括了详解Angular路由之路由守卫的使用技巧和注意事项,需要的朋友参考一下 一、路由守卫 当用户满足一定条件才被允许进入或者离开一个路由。 路由守卫场景: 只有当用户登录并拥有某些权限的时候才能进入某些路由。 一个由多个表单组成的向导,例如注册流程,用户只有在当前路由的组件中填写了满足要求的信息才可以导航到下一个路由。 当用户未执行保存操作而试图

  • 本文向大家介绍vue路由守卫+登录态管理实例分析,包括了vue路由守卫+登录态管理实例分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了vue路由守卫+登录态管理。分享给大家供大家参考,具体如下: 在路由文件需要守卫的path后面加上meta 在main.js里面加上 其中islogin是登录态,就是true or false,true表示登录,false表示未登录,存放在localSt

  • Vue Router路由守卫函数beforeEach(to,from,next)里的next方法能否写在Promisse的回调函数than里面?