react高阶组件

作者: 华戈的小书 | 来源:发表于2019-06-04 17:45 被阅读7次

什么是高阶组件
高阶组件就是一个函数,传给它一个组件,它返回一个新的组件。

const NewComponent = higherOrderComponent(OldComponent)
  • 高阶组件并不是一个什么组件,而是一个函数,它接受一个组件作为参数,返回一个新的组件。这个新的组件会使用你传给它的组件作为子组件,这样就方便在组件中传值,如下是一个简单的高阶组件示例:
import React, { Component } from 'react'
export default (OldComponent) => {
  class NewComponent extends Component {
    render () {
      return <OldComponent />
    }
  }
  return NewComponent
}
  • 这个高阶组件好像什么都没有做,只是简单地传入一个组件,然后新建一个NewComponent组件类来渲染传入的组件。要想体现出高阶组件的功能,我们先给它出入一些数据:
import React, { Component } from 'react'

export default (OldComponent, name) => {
  class NewComponent extends Component {
    constructor () {
      super()
      this.state = { 
        data: null,
      }
    }
    componentWillMount () {
      const data = sessionStorage.getItem(name);
      this.setState({ data });
    }
    render () {
      return <OlComponent data={this.state.data} />
    }
  }
  return NewComponent
}
  • 现在 NewComponent 会根据第二个参数 name 在挂载阶段从 SessionStorage 加载数据,并且修改state.data,而渲染的时候将 state.data 通过 props.data 传给 OldComponent。
  • 这样给高阶组件赋予了一定的功能,但是要如何使用这个高阶组件呢?
    假设这个文件在component/sessionLoadData.js,我们在其他地方使用这个高阶组件:
import sessionLoadData from './component/sessionLoadData.js'

class InputWithUserName extends Component {
  render () {
    return <div>用户名:<input name="username" value={this.props.data} /></div>
  }
}
InputWithUserName = sessionLoadData(InputWithUserName, 'username');
export default InputWithUserName

总结

  • 高阶组件就是一个函数,传给它一个组件,它返回一个新的组件。新的组件使用传入的组件作为子组件。
  • 高阶组件的作用是用于代码复用,可以把组件之间可复用的代码、逻辑抽离到高阶组件当中。新的组件和传入的组件通过 props 传递信息。
  • 高阶组件有助于提高我们代码的灵活性,逻辑的复用性。

相关文章

  • 利用 React 高阶组件实现一个面包屑导航

    什么是 React 高阶组件 React 高阶组件就是以高阶函数的方式包裹需要修饰的 React 组件,并返回处理...

  • React 进阶之高阶组件

    高阶组件 HOC 高阶组件(HOC)是react中的高级技术,用来重用组件逻辑。但高阶组件本身并不是React A...

  • 高阶组件

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

  • React高阶组件

    1、React高阶组件

  • React高阶组件HOC

    高阶组件本质是函数,参数是 组件1 返回组件2,高阶组件是为了复用通用逻辑高阶组件eg:import React,...

  • React高阶组件(HOC)

    高阶组件(Higher-Order Components) 高阶组件(HOC)是 React 中用于重用组件逻辑的...

  • react 笔记

    react 基本概念解析 react 的组件声明周期 react 高阶组件,context, redux 等高级...

  • ReactNative中的高阶组件(HOC)和继承详解

    ReactNative中的高阶组件(HOC)和继承详解 共同点: 高阶组件(HOC)是 React 中用于复用组件...

  • React高阶组件

    React高阶组件 在开始聊高阶组件之前我们先来看下高阶函数和高阶组件在形式上的差异: 一、什么是装饰器模式: 要...

  • React 高阶组件

    当 React 组件被包裹时(wrapped),高阶组件会返回一个增强(enhanced)的 React 组件。高...

网友评论

    本文标题:react高阶组件

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