React从react

网友投稿 210 2023-02-05


React从react

本文介绍了React从rfsMmDZBbeact-router路由上做登陆验证控制的方法,分享给大家,具体如下:

验证代码

import React from 'react'

import {connect} from 'react-redux';

function requireAuthentication(Component) {

// 组件有已登陆的模块 直接返回 (防止从新渲染)

if (Component.AuthenticatedComponent) {

return Component.AuthenticatedComponent

}

// 创建验证组件

class AuthenticatedComponent extends React.Component {

static contextTypes = {

router: React.PropTypes.object.isRequired,

}

state = {

login: true,

}

componentWillMount() {

this.checkAuth();

}

componentWillReceiveProps(nextProps) {

this.checkAuth();

}

checkAuth() {

// 判断登陆

const token = this.props.token;

const login = token ? token.login : null;

// 未登陆重定向到登陆页面

if (!login) {

let redirect = this.props.location.pathname + this.props.location.search;

this.context.router.push('/login?message=401&redirect_uri=' + encodeURIComponent(redirect));

return;

}

this.setState({login});

}

render() {

if (this.state.login) {

return

}

return ''

}

}

// 不使用 react-redux 的话直接返回

// Component.AuthenticatedComponent = AuthenticatedComponent

// return Component.AuthenticatedComponent

function mapStateToProps(state) {

return {

token: state.token,

};

}

function mapDispatchToProps(dispatch) {

return {};

}

Component.AuthenticatedComponent = connect(mapStateTohttp://Props, mapDispatchToProps)(AuthenticatedComponent);

return Component.AuthenticatedComponent

}

路由上使用


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Spring Boot @Async 异步任务执行方法
下一篇:java 判断线程状态(JAVA线程的状态)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~