当前位置: 首页 > 编程笔记 >

React.js中的高阶组件

云和惬
2023-03-14
本文向大家介绍React.js中的高阶组件,包括了React.js中的高阶组件的使用技巧和注意事项,需要的朋友参考一下

高阶部分简称为hoc。这是一种接收组件并返回具有附加功能的新组件的模式。

// hoc是自定义JavaScript函数的名称

const AddOnComponent= hoc(SimpleComponent);

我们使用带有状态和/或道具的组件来构建UI。hoc用类似的方法从提供的组件中构建一个新组件。

使用hoc在React中成为一个横切关注点。这些组件将负责单个任务的个人责任,而特殊功能将解决交叉问题。

redux的Connect功能是hoc的一个示例。

hoc的一个实际例子

根据用户类型向客户或管理员显示欢迎消息。

Class App extends React.Component{
   render(){
      return (
         <UserWelcome message={this.props.message} userType={this.props.userType} />
      );
   }
}
Class UserWelcome extends React.Component{
   render(){
      return(
         <div>Welcome {this.props.message}</div>
      );
   }
}
const userSpecificMessage=(WrappedComponent)=>{
   return class extends React.Component{
      render(){
         if(this.props.userType==’customer’){
         return(
            <WrappedComponent {…this.props}/>
         );
         } else {
            <div> Welcome Admin </div>
         }
      }
   }
}

导出默认的userSpecificMessage(UserWelcome)

在UserWelcome中,我们只是向父组件App.js传递给用户的消息显示。

UserComponent由hoc userSpecificMessage包装,后者从包装的组件即UserComponent接收道具

特殊的userSpecificMessage根据用户类型决定要显示的消息。

如果用户的类型是客户,则按原样显示消息。但是,如果用户不是客户,则默认情况下会显示“欢迎管理员”消息。

通过这种方式,我们可以在hoc中添加组件所需的通用功能,并在需要时使用它。

它允许代码重用,并仅使单个任务保持组件清洁。

 类似资料:
  • Examples Using the `withRouter` utility 如果你想应用里每个组件都处理路由对象,你可以使用withRouter高阶组件。下面是如何使用它: import { withRouter } from 'next/router' const ActiveLink = ({ children, router, href }) => { const style =

  • 在React中,高阶组件是重用组件逻辑的一项高级技术。高阶组件并不是React API的一部分。高阶组件源自于React生态。 具体来说,高阶组件是一个函数,能够接受一个组件并返回一个新的组件。 const EnhancedComponent = higherOrderComponent(WrappedComponent); 组件是将props转化成UI,然而高阶组件将一个组价转化成另外一个组件

  • 本文向大家介绍写一个react的高阶组件并说明你对高阶组件的理解相关面试题,主要包含被问及写一个react的高阶组件并说明你对高阶组件的理解时的应答技巧和注意事项,需要的朋友参考一下 定义高阶组件 import React, { Component } from 'react'; const simpleHoc = WrappedComponent => { console.log('simple

  • 我有一个HOC,它为包装的组件提供一个属性。 我想写的打字稿类型定义,正确地公开由这个HOC创建的组件的道具类型:基本上复制(推断)包装组件的道具类型,并删除我的HOC提供的属性。有可能吗? 在下面的示例中,我有一个HOC,它为任何接受它的包装组件提供了prop。因此,组件应该有props,不包括,这意味着只有。然而TypeScript显然仍然认为组件也应该获得属性。 我使用Typescript

  • 我正在用TypeScript编写一个React高阶组件(HOC)。HOC应该比包装组件多接受一个道具,所以我写了以下内容: 换句话说,是一个生成实际hoc的函数。这个HOC(我相信)是一个接受

  • Props代理 使用高阶组件能帮助我们对于传入的props进行修饰后传入真正的组件(类似于middleware的概念) function HOC(WrappedComponent) { return class Test extends Component { render() { const newProps = { title: 'New Header'