真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

react中hoc有什么用

這篇文章給大家分享的是有關(guān)react中hoc有什么用的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考。一起跟隨小編過來看看吧。

十載的山城網(wǎng)站建設(shè)經(jīng)驗,針對設(shè)計、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時及時工作處理。營銷型網(wǎng)站建設(shè)的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整山城建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計,從而大程度地提升瀏覽體驗。創(chuàng)新互聯(lián)公司從事“山城網(wǎng)站設(shè)計”,“山城網(wǎng)站推廣”以來,每個客戶項目都認真落實執(zhí)行。

HOC是react中對組件邏輯復(fù)用部分進行抽離的高級技術(shù),但HOC并不是一個React API,它是一個方法,一個接收一個組件作為參數(shù),返回一個增強的組件的方法。

What ?什么是HOC

HOC(High Order Component) 是 react 中對組件邏輯復(fù)用部分進行抽離的高級技術(shù),但HOC并不是一個 React API 。 它只是一種設(shè)計模式,類似于裝飾器模式。

具體而言,HOC就是一個函數(shù),且該函數(shù)接受一個組件作為參數(shù),并返回一個新組件。

從結(jié)果論來說,HOC相當于 Vue 中的 mixins(混合) 。其實 React 之前的策略也是采用 mixins ,但是后來 facebook 意識到 mixins 產(chǎn)生的問題要比帶來的價值大,所以移除了 mixins。 想要了解更多

Why ? 為什么使用HOC

來看個例子

import React, { Component } from 'react'class Page1 extends Component{
  componentWillMount(){
    let data = localStorage.getItem('data')    this.setState({ data })
  }

  render() {    return (
      

{this.state.data}

    )   } }  export default Page1

這個例子中在組件掛載前需要在 localStorage 中取出 data 的值,但當其他組件也需要從 localStorage 中取出同樣的數(shù)據(jù)進行展示的話,每個組件都需要重新寫一遍 componentWillMount 的代碼,那就會顯得非常冗余。那么在 Vue 中通常我們采用:

mixins: []

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

import React, { Component } from 'react'

const withStorage = WrappedComponent => {
  return class extends Component{
    componentWillMount() {
      let data = localStorage.getItem('data')
      this.setState({ data })
    }

    render() {
      return  
    }
  }
}

export default withStorage

當我們構(gòu)建好一個HOC之后,我們使用的時候就簡單多了,還看最開始的例子,我們就不需要寫 componentWillMount 了。

import React, { Component } from 'react'
import withStorage from '@/utils/withStorage'

class Page1 extends Component{
  render() {
    return 

{this.props.data}

  } } export default withStorage(Page1)

很明顯,這是一個裝飾器模式,那么就可以使用ES7形式

import React, { Component } from 'react'
import withStorage from '@/utils/withStorage'

@withStorage
class Page1 extends Component{
  render() {
    return 

{this.props.data}

  } } export default Page1

How ? 怎么使用HOC

使用場景
  • 操縱 props

  • 通過 ref 訪問組件實例

  • 組件狀態(tài)提升

  • 用其他元素包裝組件

Tips 注意事項

1,命名
把被包裝的組件名稱也包到HOC的顯示名稱中。
2,時機
不要在組件的 render 方法中使用HOC,盡量也不要在組件的其他生命周期中使用HOC。因為調(diào)用HOC的時候每次都會返回一個新的組件,于是每次render,前一次高階組件創(chuàng)建的組件都會被卸載(unmount),然后重新掛載(mount)本次創(chuàng)建的新組件,既影響效率又丟失了組件及其子組件的狀態(tài)。
3,靜態(tài)方法
如果需要使用被包裝組件的靜態(tài)方法,那么就需要手動復(fù)制這些靜態(tài)方法,因為HOC返回的新組建不包含被包裝組件的靜態(tài)方法。
4,ref
不會被傳遞給被包裝組件

HOC和Mixin的比較

react中hoc有什么用

高階組件屬于函數(shù)式編程(functional programming)思想,對于被包裹的組件時不會感知到高階組件的存在,而高階組件返回的組件會在原來的組件之上具有功能增強的效果。而Mixin這種混入的模式,會給組件不斷增加新的方法和屬性,組件本身不僅可以感知,甚至需要做相關(guān)的處理(例如命名沖突、狀態(tài)維護),一旦混入的模塊變多時,整個組件就變的難以維護,也就是為什么如此多的React庫都采用高階組件的方式進行開發(fā)。

感謝各位的閱讀!關(guān)于react中hoc有什么用就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!


新聞名稱:react中hoc有什么用
分享路徑:http://weahome.cn/article/gipigs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部