当前位置: 首页 > 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/news/107962.html

相关文章:

  • 如何在vscode中添加less插件
  • 【菜菜研科研小BUG记录】【Latex写作方面1】不定期更新
  • 【开源】基于SpringBoot的计算机机房作业管理系统的设计和实现
  • 2011-2021年“第四期”数字普惠金融与上市公司匹配(根据城市匹配)/上市公司数字普惠金融指数匹配数据
  • Flutter笔记:完全基于Flutter绘图技术绘制一个精美的Dash图标(下)
  • [微信小程序踩坑]微信小程序editor富文本组件渲染字符串时,内部图片超出大小导致无法正常渲染或回显(数据传输长度为 3458 KB,存在有性能问题!)
  • 处理大数据的基础架构,OLTP和OLAP的区别,数据库与Hadoop、Spark、Hive和Flink大数据技术
  • 策略路由和路由策略
  • Oracle (7)Online Redo Log Files
  • centos7 install postgres-15
  • Navicat for MySQL 视图创建使用方法
  • 毅速丨金属3D打印能替代传统制造吗?
  • C++ 学习系列 -- 标准库常用得 algorithm function
  • 【LeetCode力扣】189 53 轮转数组 | 最大子数组和
  • 【深度学习】吴恩达课程笔记(一)——深度学习概论、神经网络基础
  • ActiveMQ消息中间件简介
  • 前端的简单介绍
  • No authorization token was found
  • webpack 优化
  • 基于华为云 IoT 物联网平台实现家居环境实时监控
  • MySQL总结 (思维导图,常用)
  • Github的2FA验证问题的丝滑解决方案 ||(Verify your two-factor authentication (2FA) settings)
  • vmware17.0|ubuntu22.04.0 解决灰色Vmware Tool 无法重新安装和 无法和win11相互拖拽文件问题
  • 【EI会议征稿】 2024年遥感、测绘与图像处理国际学术会议(RSMIP2024)
  • IT行业变成了夕阳行业
  • 力扣1047删除字符串中的所有相邻重复项(java,栈解法)
  • 若依框架的使用+代码生成功能
  • Capacitor 打包 h5 到 Android 应用,uniapp https http net::ERR_CLEARTEXT_NOT_PERMITTED
  • PyCharm社区版安装
  • nodejs+vue全国公考岗位及报考人数分析