react中什么是hoc


本文摘自PHP中文网,作者青灯夜游,侵删。

HOC是react中对组件逻辑复用部分进行抽离的高级技术,但HOC并不是一个React API,它是一个方法,一个接收一个组件作为参数,返回一个增强的组件的方法。

相关教程推荐:React视频教程

What ?什么是HOC

HOC(High Order Component) 是 react 中对组件逻辑复用部分进行抽离的高级技术,但HOC并不是一个 React API 。 它只是一种设计模式,类似于装饰器模式。

具体而言,HOC就是一个函数,且该函数接受一个组件作为参数,并返回一个新组件。

从结果论来说,HOC相当于 Vue 中的 mixins(混合) 。其实 React 之前的策略也是采用 mixins ,但是后来 facebook 意识到 mixins 产生的问题要比带来的价值大,所以移除了 mixins。 想要了解更多

Why ? 为什么使用HOC

来看个例子

1

2

3

4

5

6

7

8

9

10

11

12

import React, { Component } from 'react'class Page1 extends Component{

  componentWillMount(){

    let data = localStorage.getItem('data')    this.setState({ data })

  }

 

  render() {    return (

      <h2>{this.state.data}</h2>

    )

  }

}

 

export default Page1

这个例子中在组件挂载前需要在 localStorage 中取出 data 的值,但当其他组件也需要从 localStorage 中取出同样的数据进行展示的话,每个组件都需要重新写一遍 componentWillMount 的代码,那就会显得非常冗余。那么在 Vue 中通常我们采用:

1

mixins: []

但是在 React 中我们需要采用HOC模式咯

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

import React, { Component } from 'react'

 

const withStorage = WrappedComponent => {

  return class extends Component{

    componentWillMount() {

      let data = localStorage.getItem('data')

      this.setState({ data })

    }

 

    render() {

      return <WrappedComponent data={this.state.data} {...this.props} />

    }

  }

}

 

export default withStorage

当我们构建好一个HOC之后,我们使用的时候就简单多了,还看最开始的例子,我们就不需要写 componentWillMount 了。

阅读剩余部分

相关阅读 >>

React中dva干什么用的?

怎么访问本地React项目

ReactReact native的区别是什么

weex和React native区别是什么

React子向父通信有哪些方法?

React desktop是什么意思?

React可以做什么?

如何判断安装React native是否成功

React中什么叫子组件

React中ref怎么用

更多相关阅读请进入《React》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...