react-router v4校验登录

react-router v2 中有onEnter 钩子函数,校验登录逻辑在这里写最为合适不过了;时过境迁,v4版本迎来了api大改,onEnter没有了;参考了网络上一些大牛的奇技淫巧,再结合自身项目的现有业务;下面👇 是这道菜的做法,欢迎各位大佬来品尝:

核心食材

1.    v4推出的 <Redirect /> 组件

2.    HOC(verify)

3.    react-router-dom

菜谱

react-router 的Route Router 组件,这里就不阐述了,可以查下官网的用法;那里说的比我好多了;核心做法是Route的component 传入一个verify(Comp)   

即<Route component={verify(Comp)}></Route>

HOC

const verify = (Comp) => {
    return class realComp extends React.Component {
          constructor(props) {
                super(props)
                this.state = {
                      isLogin: 初始化,
                }
           }
          render() {
              if (this.state.isLogin === '初始化') {
                   return null
              } else if (未登陆) {
                   return <Redirect to='/login' />
               }
               return <Comp {...this.props} />
          }
    }
}

1.  参数 Comp

2.  登录 return <Comp />

3.  未登录 return <Redirect to='/login' />

总结:主要是结合高阶函数(组件)思想和 v4 的<Redirect /> 

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 在这个教程里,我们会从一个例子React应用开始学习react-router-dom。其中你会学习如何使用Link...
    uncle_charlie阅读 34,819评论 1 40
  • 深入JSX date:20170412笔记原文其实JSX是React.createElement(componen...
    gaoer1938阅读 8,199评论 2 35
  • 做React需要会什么? react的功能其实很单一,主要负责渲染的功能,现有的框架,比如angular是一个大而...
    李先生Mr_Li阅读 3,034评论 1 20
  • 自己是属于比较幸运的那种,从很小的时候开始,自己喜欢什么、有什么兴趣爱好的话父母都是赞同的。但是没能坚持到最后,父...
    哎吆呦呦切克闹阅读 295评论 0 1
  • 背景 今天进行项目的时候,原本正常运行的项目 莫名的crash了解决这个问题的步骤: 查看控制台抛出的错误 抛出异...
    申申申申申阅读 3,995评论 2 5

友情链接更多精彩内容