React的高阶组件详解

  1. 接受一个或多个函数作为参数; 返回一个新的函数;
    2 使用场景(页面权限, 某些页面是必须用户登录成功才能进行进入;如果用户没有登录成功,那么直接跳转到登录页面;)

    // 定义一个高阶组件, 用于鉴权的操作
    function loginAuth(WrapperCpn) {
    return props => {
    // 从本地存储中获取token, token有值表示已登录, 没有值表示未登录
    const token = localStorage.getItem("token")
    if(token) {
    return <WrapperCpn {...props}/>
    } else {
    return

    请先登录, 再跳转到对应的页面中


    }
    }
    }

const Cart = loginAuth(function() {
return

购物车页面


})

export class App extends PureComponent {
render() {
return (




)
}
}

3 使用场景( props增强)

// 定义一个高阶组件, 对传入的组件进行props增强
function enhancedProps(WrapperCpn) {
class NewComponent extends PureComponent {
constructor() {
super()

  this.state = {
    userInfo: {
      name: "chenyq",
      age: 18
    }
  }
}

render() {
  // 如果组件本身也有传递参数, 也需要将参数添加进来
  return <WrapperCpn {...this.props} {...this.state.userInfo}/>
}

}

return NewComponent
}

// 调用高阶组件, 对组件进行props增强
const Home = enhancedProps(function(props) {
return

{props.name}-{props.age}


})
const About = enhancedProps(function(props) {
return

{props.name}-{props.age}-{props.names}


})

export class App extends PureComponent {
render() {
return (


{/* 展示增强后的组件 /}

{/
本身也有传递参数 */}
<About names={["aaa", "bbb", "ccc"]}/>

)
}
}

参考文献: https://blog.csdn.net/m0_71485750/article/details/126694889

posted @   小白张先生  阅读(24)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示