react高阶成分(HOC)例子效果

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

javascript 复制代码
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函数式组件的高阶组件示例,可以帮助你在函数式组件中实现类似的功能封装和复用。可以根据自己的需求进行代码测试。

相关推荐
刘发财9 小时前
弃用html2pdf.js,这个html转pdf方案能力是它的几十倍
前端·javascript·github
ssshooter15 小时前
看完就懂 useSyncExternalStore
前端·javascript·react.js
Live0000017 小时前
在鸿蒙中使用 Repeat 渲染嵌套列表,修改内层列表的一个元素,页面不会更新
前端·javascript·react native
柳杉17 小时前
使用Ai从零开发智慧水利态势感知大屏(开源)
前端·javascript·数据可视化
球球pick小樱花17 小时前
游戏官网前端工具库:海内外案例解析
前端·javascript·css
喝水的长颈鹿17 小时前
【大白话前端 02】网页从解析到绘制的全流程
前端·javascript
用户145369814587818 小时前
VersionCheck.js - 让前端版本更新变得简单优雅
前端·javascript
codingWhat18 小时前
整理「祖传」代码,就是在开发脚手架?
前端·javascript·node.js
码路飞18 小时前
写了个 AI 聊天页面,被 5 种流式格式折腾了一整天 😭
javascript·python
Lee川18 小时前
优雅进化的JavaScript:从ES6+新特性看现代前端开发范式
javascript·面试