react进入路由前获取数据_React从react-router路由上做登陆验证控制的方法

本文介绍了React从react-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(mapStateToProps, mapDispatchToProps)(AuthenticatedComponent);

return Component.AuthenticatedComponent

}

路由上使用

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值