如何在React Redux中添加受保护的路由

统治者自然

我创建了一个登录组件,上面有所有逻辑东西。

登录减少器是:

const openState = {
  loggedIn: null,
  user: null
}

export default (state = openState, action) => {
  switch (action.type) {
    case LOGIN:
      return { ...state, loggedIn: true, user: action.payload }
    case LOGOUT:
      return { ...state, loggedIn: false, user: null }
    default:
      return openState
  }
}

那个行动 :

export const logIn = (user) => {
  return {
    type: LOGIN,
    payload: user
  }
}

export const logOut = () => {
  return {
    type: LOGOUT
  }
}

一切工作都很好,但是我不确定如何将动作中loggedInanduser道具传递到路由组件中,以确保所有路由的安全:

const MainRoutes = props => {
  const { loggedIn } = props;

  console.log(props.loggedIn)

return (
  <Router history={history}>
    <Baseline />
    <Menu/>
    <Container maxWidth="md">
      <Switch>
        <Route exact path="/Login" component={Login} />
        <Route exact path="/Carousel" component={Carousel} />
        <Route exact path="/Stepper" component={Stepper} />
        <Route component={NotFound} />
      </Switch>
    </Container>
  </Router>
);
}

const mapStateToProps = (state) => {
return { loggedIn: state.loggedIn };
};

export default connect(mapStateToProps)(MainRoutes);

如果我会console.logloggedIn道具,我将无法定义:| 基于此,loggedIn我可以将逻辑创建到路由组件中。

苏莱曼·萨(SuleymanSah)

正如其他人已经描述的那样,您最好创建一条保护路线来完成您想要的。如果用户未登录,则只需将其重定向到“登录”路由。

这是我的实现:(codesandbox

import React from "react";
import { Route, Redirect } from "react-router-dom";
import { connect } from "react-redux";

const ProtectedRoute = ({
  path,
  component: Component,
  render,
  loggedIn,
  ...rest
}) => {
  return (
    <Route
      path={path}
      {...rest}
      render={(props) => {
        if (loggedIn) {
          return Component ? <Component {...props} /> : render(props);
        }
        return (
          <Redirect
            to={{
              pathname: "/login",
              state: { from: props.location }
            }}
          />
        );
      }}
    />
  );
};

const mapStateToProps = (state) => {
  const { loggedIn } = state.auth;
  return {
    loggedIn
  };
};

export default connect(mapStateToProps)(ProtectedRoute);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用react-router-dom在react中创建受保护的路由

来自分类Dev

如何控制 React 应用程序中受保护页面的路由?

来自分类Dev

React js-受保护的路由

来自分类Dev

使用JWT在React上受保护的路由

来自分类Dev

如何在 React.js 中为图像添加路由

来自分类Dev

如何使用受保护的路由在reactjs中隐藏导航栏组件

来自分类Dev

如何通过 isAuthenticated 让 Authenticated Component 路由到受保护的路由?

来自分类Dev

如何在首页中嵌套React路由

来自分类Dev

如何在 React Redux 中渲染 ListItems?

来自分类Dev

使用React Router V6实施受保护的路由

来自分类Dev

如何在条件和Redux中使用React路由?

来自分类Dev

如何在 react-redux 应用程序中设置嵌套路由?

来自分类Dev

Scala中受保护的方法如何在jvm上工作

来自分类Dev

如何在applescript中创建受保护的窗口?

来自分类Dev

如何在Linux内核中写入受保护的页面?

来自分类Dev

如何在pandoc markdown中引用受保护的代码块?

来自分类Dev

如何在Raku中定义受保护的方法?

来自分类Dev

如何在magento中检索受保护的数据数组值

来自分类Dev

如何在Ubuntu中播放受DRM保护的DVD?

来自分类Dev

如何在PHP中获取对象的受保护属性值

来自分类Dev

如何在 20.04 中创建受密码保护的存档

来自分类Dev

如何在React中单击添加样式

来自分类Dev

如何在React中添加内联样式?

来自分类Dev

如何实现受保护的客户端路由?

来自分类Dev

如何使用 react-app-link toRoute({render}) 创建受保护的路由

来自分类Dev

如何在React中保护路径?

来自分类Dev

如何保护express.js中的路由?

来自分类Dev

无论缓存如何,如何在React中更新Redux存储

来自分类Dev

如何在Angular 7中的路由保护子句中访问路由参数?

Related 相关文章

  1. 1

    如何使用react-router-dom在react中创建受保护的路由

  2. 2

    如何控制 React 应用程序中受保护页面的路由?

  3. 3

    React js-受保护的路由

  4. 4

    使用JWT在React上受保护的路由

  5. 5

    如何在 React.js 中为图像添加路由

  6. 6

    如何使用受保护的路由在reactjs中隐藏导航栏组件

  7. 7

    如何通过 isAuthenticated 让 Authenticated Component 路由到受保护的路由?

  8. 8

    如何在首页中嵌套React路由

  9. 9

    如何在 React Redux 中渲染 ListItems?

  10. 10

    使用React Router V6实施受保护的路由

  11. 11

    如何在条件和Redux中使用React路由?

  12. 12

    如何在 react-redux 应用程序中设置嵌套路由?

  13. 13

    Scala中受保护的方法如何在jvm上工作

  14. 14

    如何在applescript中创建受保护的窗口?

  15. 15

    如何在Linux内核中写入受保护的页面?

  16. 16

    如何在pandoc markdown中引用受保护的代码块?

  17. 17

    如何在Raku中定义受保护的方法?

  18. 18

    如何在magento中检索受保护的数据数组值

  19. 19

    如何在Ubuntu中播放受DRM保护的DVD?

  20. 20

    如何在PHP中获取对象的受保护属性值

  21. 21

    如何在 20.04 中创建受密码保护的存档

  22. 22

    如何在React中单击添加样式

  23. 23

    如何在React中添加内联样式?

  24. 24

    如何实现受保护的客户端路由?

  25. 25

    如何使用 react-app-link toRoute({render}) 创建受保护的路由

  26. 26

    如何在React中保护路径?

  27. 27

    如何保护express.js中的路由?

  28. 28

    无论缓存如何,如何在React中更新Redux存储

  29. 29

    如何在Angular 7中的路由保护子句中访问路由参数?

热门标签

归档