react高阶组件的使用

react高阶组件的使用高阶组件高阶组件 高阶组件是参数为组件 返回值为新组件的函数 作用 像我们之前用到的 react 的 Form 组件和 redux 的 connect 函数都是高阶组件 使用高阶组件能够提高代码复用能力实现一个高阶组件实现一个高阶组件很容易 只需要简单的几步就好了 importReact useEffect useState from react interfacePro functionWith WrappedCompo React FC amp l

高阶组件

高阶组件:高阶组件是参数为组件,返回值为新组件的函数。
作用:像我们之前用到的react的Form组件和redux的connect函数都是高阶组件,使用高阶组件能够提高代码复用能力

实现一个高阶组件

实现一个高阶组件很容易,只需要简单的几步就好了

import React, { 
    useEffect, useState } from "react"; interface Props{ 
    } function WithComponent(WrappedComponent: React.FC<Props>) { 
    return function(props:any){ 
    return (<div> <WrappedComponent { 
   ...props}> <div> 嵌套内容 </div> </WrappedComponent> </div>) } } export default WithComponent; 

使用高阶组件

import WithComponent from "@/components/WithComponent"; import React from "react"; import { 
    connect } from "react-redux"; import { 
    bindActionCreators } from "redux"; function Test(props:any){ 
    return ( <div> Test { 
   props.children} </div> ) } export default WithComponent(Test); 

套用高阶组件

 export default connect(mapStateToProps, mapDispatchToProps)(WithComponent(Test)); 

当组件被包裹的层数过多时官方文档也给出了解决方案

const EnhancedComponent = withRouter(connect(commentSelector)(WrappedComponent)) // ... 你可以编写组合工具函数 // compose(f, g, h) 等同于 (...args) => f(g(h(...args))) const enhance = compose( // 这些都是单参数的 HOC withRouter, connect(commentSelector) ) const EnhancedComponent = enhance(WrappedComponent) 

compose是一个类似于数组的reduce方法的方法,将h、g、f依次执行

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/215742.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午1:32
下一篇 2026年3月18日 下午1:33


相关推荐

  • 对c语言中static函数的理解「建议收藏」

    对c语言中static函数的理解「建议收藏」先看看前两篇博客:个人对头文件的理解、对声明和定义的理解。static函数只在定义该static函数的cpp中可见,在其他cpp中是不可见的。举个例子,我建立了一个project,该projec

    2022年7月4日
    25
  • directshow是什么_showpoint

    directshow是什么_showpoint1.DirectShow介绍DirectShow是一个windows平台上的流媒体框架,提供了高质量的多媒体流采集和回放功能。它支持多种多样的媒体文件格式,包括ASF、MPEG、AVI、MP3和WAV文件,同时支持使用WDM驱动或早期的VFW驱动来进行多媒体流的采集。DirectShow整合了其它的DirectX技术,能自动地侦测并使用可利用的音视频硬件加速,也能支持没有硬件加速的系统。DirectShow大大简化了媒体回放、格式转换和采集工作。但与此同时,它也为用户自定义的解决方…

    2022年10月12日
    4
  • java中的protected访问权限

    java中的protected访问权限java 中的 protected 的访问权限 nbsp nbsp nbsp nbsp java 中 protected 的几点说明 下面主要分为两点说明 第一继承性 第二非继承性 nbsp nbsp nbsp nbsp 继承性 如果一个类继承了另一个类 无论这个类和另一个类是否在同一个包中 都可以继承另一个类中的 protected 的成员 nbsp nbsp nbsp nbsp 非继承性 第一点 如果再 A 类中要访问 B 类中的申明的 protected 的成员只需要 A 类和 B 类在

    2026年3月20日
    2
  • java injector_Injector的实现原理

    java injector_Injector的实现原理在分析 bootstrapMod 方法时 我们发现当需要一个类的事例的时候只需要调用 injector get 方法就能够得到 这个 Injector 就是 Angular 依赖注入的基础 任何可以被注入的类都是都可以通过 injector get 方法来获取 调用 injector get 方法的时候会出现一下几种情况 1 如果以前没有创建过 就会 new 一个事例 并返回 2 如果以前创建过 就返回以前创建的那个事

    2026年3月19日
    2
  • MYCCL复合特征码定位器及其使用教程[通俗易懂]

    MYCCL复合特征码定位器及其使用教程[通俗易懂]复合特征码辅助定位工具MyCCLby:Tanknight——————————-  自从CCL问世以来,特征码修改已经成为了对付杀毒软件的常用手法,但是所谓魔高一尺,道高一丈杀毒软件开始使用多重复合特征码来对付特征码修改就是说只有你同时改掉程序所有的守护特征码此程序才不被杀。  所以本程序的作用是进行多重特征…

    2025年7月24日
    5
  • ArcGIS相交闭合矩形线转面

    ArcGIS相交闭合矩形线转面ArcGIS 相交闭合矩形线转面如图为两条自我闭合且相交的线现在想将其转换成如下图所示的两个独立的多边形 但直接使用 ArcGIS 的 要素转面 工具会生成五个独立的多边形 如图所示 属性记录也为 5 条 现使用另一种方式进行转换 1 要素转 json 使用工具箱中的 要素转 json 工具将线要素转成 json 的文件 2 修改 json 代码将 json 文件用编辑器打开 vs not

    2025年9月14日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号