react高阶成分(HOC)

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

目录
相关文章
|
4月前
|
前端开发
react高阶成分(HOC)例子效果
react高阶成分(HOC)例子效果
|
4月前
|
前端开发
深入浅出:react高阶成分(HOC)的应用
深入浅出:react高阶成分(HOC)的应用
40 0
|
5月前
|
设计模式 前端开发 JavaScript
什么是高阶成分(HOC)?解释 React 中 render() 的目的?
什么是高阶成分(HOC)?解释 React 中 render() 的目的?
|
6月前
|
前端开发
React-组件-非受控组件 和 React-组件-高阶组件
React-组件-非受控组件 和 React-组件-高阶组件
29 0
|
6月前
|
前端开发 JavaScript API
React-高阶组件-应用场景
React-高阶组件-应用场景
40 0
|
8月前
|
前端开发 JavaScript API
React高阶学习(二)
@[TOC](目录) # 1. 基本概念和语法 React 是基于 JavaScript 的库,用于构建用户界面。它采用虚拟 DOM 技术,能够高效地渲染页面。React 的基本语法包括 JSX、组件、状态管理和生命周期钩子等。 示例: ```jsx import React from 'react'; class App extends React.Component { constructor(props) { super(props); this.state = { count: 0 }; } handleClick = (
|
3月前
|
设计模式 前端开发 数据可视化
【第4期】一文了解React UI 组件库
【第4期】一文了解React UI 组件库
105 0
|
3月前
|
存储 前端开发 JavaScript
【第34期】一文学会React组件传值
【第34期】一文学会React组件传值
32 0
|
3月前
|
资源调度 前端开发 JavaScript
React 的antd-mobile 组件库,嵌套路由
React 的antd-mobile 组件库,嵌套路由
41 0