美文网首页
React_高阶组件的使用

React_高阶组件的使用

作者: coderhzc | 来源:发表于2021-12-24 17:31 被阅读0次

1.什么是高阶组件?

官方的定义:高阶组件是参数为组件,返回值为新组件的函数;

高阶函数的维基百科定义:至少满足以下条件之一:

  1. 接受一个或多个函数作为输入;
  2. 输出一个函数;
  3. avaScript中比较常见的filter、map、reduce都是高阶函数。

2. 高阶组件的调用过程类似于这样:

const EnhancedComponent = higherOrderComponent(WrappedComponent);

3.高阶函数的编写过程类似于这样:

function higherOrderComponent(WrappedComponent) {
  class NewCompoment extends PureComponent{
      render () {
        return <WrappedComponent/>
      }
  }
  NewCompoment.displayName = "CoderHzc"
}

3.1 组件的名称问题:
-- 在ES6中,类表达式中类名是可以省略的;
-- 组件的名称都可以通过displayName来修改;
3.2 高阶组件并不是React API的一部分,它是基于React的 组合特性而形成的设计模式;
3.3 高阶组件在一些React第三方库中非常常见:

4. 具体代码如下:

import React, { PureComponent } from 'react'

// 0.
 class App extends PureComponent {
  render() {
    return (
      <div>
        App 
      </div>
    )
  }
}
// 修改App名字问题
App.displayName = "CoderHzc"
// 1.定义一个高阶组件
function enhanceComponent(WrappedComponent) {
  return class NewComponent extends PureComponent {
    render() {
      return <WrappedComponent {...this.props}/>
    }
  }
}
// 2.
const EnhanceComponent = enhanceComponent(App)
// 3.
export default EnhanceComponent

5.高阶组件应用-增强props具体代码如下:

  1. 引入createContext
    import React, { PureComponent, createContext } from 'react';
  2. 创建Context
    // 创建Context
    const UserContext = createContext({
    nickname: "默认",
    level: -1,
    区域: "中国"
    });
    3.使用UserContext中有个Provider属性包裹组件
    <UserContext.Provider value={{nickname: "why", level: 90, region: "中国"}}>
    <Home/>
      <About/>
    </UserContext.Provider>
import React, { PureComponent, createContext } from 'react';

// 创建Context
const UserContext = createContext({
  nickname: "默认",
  level: -1,
  区域: "中国"
});
class Home extends PureComponent {
  render() {
    return (
      <UserContext.Consumer>
        {
          user => {
            return <h2>Home: {`昵称: ${user.nickname} 等级: ${user.level} 区域: ${user.region}`}</h2>
          } 
        }
      </UserContext.Consumer>
    )
  }
}

class About extends PureComponent {
  render() {
    return (
      <UserContext.Consumer>
        {
          user => {
            return <h2>About: {`昵称: ${user.nickname} 等级: ${user.level} 区域: ${user.region}`}</h2>
          } 
        }
      </UserContext.Consumer>
    )
  }
}

class App extends PureComponent {
  render() {
    return (
      <div>
        App
        <UserContext.Provider value={{nickname: "why", level: 90, region: "中国"}}>
          <Home/>
          <About/>
        </UserContext.Provider>
      </div>
    )
  }
}

export default App;

相关文章

  • React_高阶组件的使用

    1.什么是高阶组件? 官方的定义:高阶组件是参数为组件,返回值为新组件的函数; 高阶函数的维基百科定义:至少满足以...

  • 最强React精讲教程+源码,资源地址⬇️

    React_模块化,组件化介绍.avi React_hello React.avi React_虚拟DOM对象, ...

  • 高阶组件

    React 高阶组件HOC (Higher-Order Component) 高阶组件是react中重复使用组件逻...

  • ES7 装饰器模式的配置

    装饰器模式简介 在使用 React 框架编程中,我们用高阶组件的时候,使用时往往需要用高阶组件函数包裹当前组件来导...

  • react小书学习mark

    1、高阶组件是一个函数,接受一个组件作为参数,返回一个新的组件。新的组件使用传入的组件作为子组件。1.1、高阶组件...

  • React-Native 高阶组件

    高阶函数 高阶组件(属性代理)普通组件还可以向高阶组件传值 高阶组件(反向继承) 普通组件的 static 方法怎...

  • React与高阶组件

    什么是高阶组件 如果熟悉react的童鞋,一定或多或少听说或者使用过高阶组件(Higher Order Compo...

  • 高阶函数 - React 中反向继承的应用

    阅读这篇文章之前,可以先拜读一下这篇文章 React 进阶之高阶组件 了解一下高阶组件的概念及几种使用方式。 高阶...

  • 高阶函数 - 属性代理在多表单中的应用

    阅读这篇文章之前,可以先拜读一下这篇文章 React 进阶之高阶组件 了解一下高阶组件的概念及几种使用方式。 高阶...

  • React 高阶组件注意事项

    使用高阶组件应当注意的几点: 1、 高阶组件作为一个高复用性的函数。应该尽量做到在HOC函数中不修改原有组件。昨天...

网友评论

      本文标题:React_高阶组件的使用

      本文链接:https://www.haomeiwen.com/subject/ttylqrtx.html