当前位置: 首页 > article >正文

react高阶成分(HOC)

使用React函数式组件写了一个身份验证的一个功能,示例通过高阶组件实现的一个效果展示:

import React, { useState, useEffect } from 'react';
 
// 定义一个高阶组件,它接受一个组件作为输入,并返回一个新的包装组件
const withAuthentication = (WrappedComponent) => {
  return function WithAuthentication(props) {
    const [isAuthenticated, setIsAuthenticated] = useState(false);
 
    // 模拟身份验证过程,实际情况可能需要异步请求服务器验证
    useEffect(() => {
      // 假设用户已登录
      setIsAuthenticated(true);
    }, []);
 
    // 根据身份验证状态渲染不同的内容
    if (isAuthenticated) {
      return <WrappedComponent {...props} />;
    } else {
      return <p>请先登录</p>;
    }
  };
};
 
// 创建一个普通的函数式组件
function MyComponent() {
  return <div>这是需要身份验证的组件</div>;
}
 
// 使用高阶组件包装MyComponent以添加身份验证功能
const AuthenticatedComponent = withAuthentication(MyComponent);
 
// 在应用中使用包装后的组件
function App() {
  return (
    <div>
      <h1>我的应用</h1>
      <AuthenticatedComponent />
    </div>
  );
}
 
export default App;
 

在这个示例中,withAuthentication 是一个高阶组件,它接受一个函数式组件 WrappedComponent 作为参数,并返回一个新的函数式组件 WithAuthentication。在 WithAuthentication 组件内部,我们使用了 useState 和 useEffect 钩子来模拟身份验证过程,并根据身份验证状态渲染不同的内容。

最后,我们在应用中使用了 AuthenticatedComponent,它是通过高阶组件 withAuthentication 包装过的 MyComponent,从而添加了身份验证功能。

这是一个适用于React函数式组件的高阶组件示例,可以帮助你在函数式组件中实现类似的功能封装和复用。可以根据自己的需求进行代码测试。


http://www.kler.cn/a/146119.html

相关文章:

  • OpenHarmony-7.IDL工具
  • opencv_KDTree_搜索介绍及示例
  • [JavaScript] 深入理解流程控制结构
  • 新阿里云买服务器配置需手动配置80端口
  • springboot医院信管系统
  • 【Android】蓝牙电话HFP连接源码分析
  • YOLOv8改进 | SAConv可切换空洞卷积(附修改后的C2f+Bottleneck)
  • 面试笔记--Linux常用命令
  • 网络安全—自学
  • 基于单片机DHT11湿度测量与控制-CO2-光照报警系统程序和仿真
  • 终于等到你!常用的组织架构图模板,高清图片一键导出
  • 在vue页面中添加组件到底有多方便
  • udp通信socket关闭后,缓存不清空
  • 【Android知识笔记】性能优化专题(三)
  • [环境配置]vscode免密ssh的设置流程
  • 85基于Matlab的交通设施识别
  • 解决ssh -T git@github.com报错connection closed问题
  • Linux命令之sed
  • AI和人工智能与机器学习全景报告
  • 在线知识库管理平台zyplayer-doc
  • MyBatis-Plus简介和入门操作
  • Java基础之数组
  • 基于ssm的网上订餐系统
  • 工业自动化配电柜监控技术,不会用就太可惜了!
  • MIMO雷达(TI文档)
  • 相机内存卡照片删除怎么恢复?没有备份可这样操作