react 高阶组件

你的名字 2021-07-24 17:11 576阅读 0赞
  1. 高阶组件必须是一个函数,且必须返回一个组件,参数也必须接收一个组件
  2. 作用:能对传入的组件进行一些限定操作,可以使用生命周期等

在这里插入图片描述
路由权鉴代码示例:
高阶组件

  1. import React,{ Component} from 'react'
  2. import { connect} from 'react-redux'
  3. import { addFlashMessage} from '../actions/flashMessages'
  4. import { withRouter} from 'react-router-dom'
  5. export default function(ComposedComponent)
  6. {
  7. class Authenticate extends React.Component{
  8. //第一次判断
  9. componentDidMount()
  10. {
  11. if(!this.props.isAuth)
  12. {
  13. this.props.addFlashMessage({
  14. type:'danger',
  15. text:'请先登录才能查看'
  16. })
  17. this.props.history.replace('/login')
  18. }
  19. }
  20. //中途退出,也无进入该页面的权鉴
  21. componentWillUpdate(nextProps)
  22. {
  23. if(!nextProps.isAuth)
  24. {
  25. this.props.history.push('/login')
  26. }
  27. }
  28. render()
  29. {
  30. return(
  31. <ComposedComponent { ...this.props}/>
  32. )
  33. }
  34. }
  35. const mapStateToProps=(state)=>{
  36. return{
  37. isAuth:state.auth.isAuth
  38. }
  39. }
  40. return connect(mapStateToProps,{ addFlashMessage})(withRouter(Authenticate))
  41. }

路由:

  1. import React from 'react';
  2. import { Route} from 'react-router-dom'
  3. import App from './components/App'
  4. import SignUp from './components/signup/signup'
  5. import Login from './login/LoginPage'
  6. import Shop from './shop/shoppage'
  7. import requireAuth from './utils/requireAuth'
  8. export default (
  9. <div className='container'>
  10. <Route path='/' exact component={ App}></Route>
  11. <Route path='/signup' component={ ()=><SignUp/>}></Route>
  12. <Route path='/login' component={ ()=><Login/>}></Route>
  13. <Route path='/shop' component={ requireAuth(Shop)}></Route>
  14. </div>
  15. )
  16. // component={()=>{requireAuth(Shop)}}

发表评论

表情:
评论列表 (有 0 条评论,576人围观)

还没有评论,来说两句吧...

相关阅读

    相关 React-组件

    高阶组件是 React 中复用组件逻辑的一种技巧,高阶组件是一个函数,接收需要包装的组件,返回值为增强后的组件。 实现思路: 高阶组件内部创建一个类组件,在这个类组件中去提

    相关 React—HOC 组件

    基本概念 对组件中可以被重复使用的内容进行封装 什么是高阶组件 `高阶组件是一个函数`,接收是一个组件,返回值也是一个组件,这类组件我么叫做高阶组件(HOC);高

    相关 React组件

    高阶组件(HOC)是React里的高级技术为了应对重用组件的逻辑,HOC本质上不是React API的一部分。他是从React的组合性质中显露出来的模式 具体来说,一个高阶

    相关 react 组件

    高阶组件必须是一个函数,且必须返回一个组件,参数也必须接收一个组件 作用:能对传入的组件进行一些限定操作,可以使用生命周期等 ![在这里插入图片描述