个性化阅读
专注于IT技术分析

React高阶组件用法 – ReactJS实战教程

上一章ReactJS实战教程请查看:React使用表格结构化数据

高阶组件也被称为HOC,在React中,HOC是一种重用组件逻辑的高级技术,它是一个获取组件并返回新组件的函数。据官方网站介绍,这并不是React API的功能(部分),而是一种从React的组合特性中产生的模式,它们类似于用于向现有组件添加附加功能的JavaScript函数。

高阶组件函数接受另一个函数作为参数,map函数是理解这一点的最佳示例。这样做的主要目的是将组件逻辑分解为更简单、更小的函数,可以根据需要重用这些函数。

语法

const NewComponent = higherOrderComponent(WrappedComponent);  

我们知道组件将props转换为UI,而高阶组件将组件转换为另一个组件,并允许向其中添加额外的数据或功能。hoc在第三方库中很常见,hoc的例子是Redux的connect和Relay的createFragmentContainer。

现在,我们可以通过下面的示例了解hoc的工作原理。

//函数创建  
function add (a, b) {  
  return a + b  
}  
function higherOrder(a, addReference) {  
  return addReference(a, 20)  
}  
//方式调用 
higherOrder(30, add) // 50  

在上面的例子中,我们创建了两个函数add()和higherOrder(),现在,我们提供add()函数作为higherOrder()函数的参数。对于调用,将其重命名为higherOrder()函数中的addReference,然后调用它。

这里,传递的函数称为回调函数,传递回调函数的函数称为高阶(HOCs)函数。

例子

创建一个名为HOC.js的新文件,在这个文件中,我们创建了一个HOC函数,它接受一个参数作为组件,这个组件是App。

HOC.js

import React, {Component} from 'react';  
  
export default function Hoc(HocComponent){  
    return class extends Component{  
        render(){  
            return (  
                <div>  
                    <HocComponent></HocComponent>  
                </div>  
  
            );  
        }  
    }   
}  

现在,将HOC.js文件包含到App.js文件中。在这个文件中,我们需要调用HOC函数。

App = Hoc(App);  

应用程序组件包装在另一个React组件中,以便我们可以修改它。因此,它成为高阶组件的主要应用。

App.js

import React, { Component } from 'react';  
import Hoc from './HOC';  
  
class App extends Component {  
  render() {  
    return (  
      <div>  
        <h2>HOC例子</h2>  
        srcmini - 开发教程网.  
      </div>  
    )  
  }  
}  
App = Hoc(App);  
export default App;  

高阶组件约定

  • 不要在组件的render方法中使用hoc。
  • 必须复制静态方法才能访问它们,你可以使用hoist-non-react-statics软件包来自动复制所有非反应静态方法。
  • HOC不适用于refs,因为“refs”不作为参数或参数传递。如果将ref添加到HOC组件中的元素,则该ref引用最外层容器组件的实例,而不是包装组件。
赞(0)
未经允许不得转载:srcmini » React高阶组件用法 – ReactJS实战教程

评论 抢沙发

评论前必须登录!