最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

React高階組件的使用淺析

 更新時(shí)間:2022年08月13日 14:04:34   作者:是張魚小丸子鴨  
高階組件就是接受一個(gè)組件作為參數(shù)并返回一個(gè)新組件(功能增強(qiáng)的組件)的函數(shù)。這里需要注意高階組件是一個(gè)函數(shù),并不是組件,這一點(diǎn)一定要注意,本文給大家分享React高階組件使用小結(jié),一起看看吧

在學(xué)習(xí)高階組件前,首先我們了解一下高階函數(shù)

高階函數(shù)

把一個(gè)函數(shù)作為另一個(gè)函數(shù)的參數(shù),那么這個(gè)函數(shù)就是高階函數(shù)

高階組件

一個(gè)組件的參數(shù)是組件,并且返回值是一個(gè)組件,我們稱這類組件為高階組件

react常見的高階函數(shù)

withRouter()

memo()

react-redux中connect

高階組件形式

React中的高階組件主要有兩種形式:屬性代理和反向繼承

屬性代理:一個(gè)函數(shù)接收一個(gè)WrappedComponent組件作為參數(shù)傳入,并返回一個(gè)繼承React.Component組件的類,且在該類的render()方法中返回被傳入的WrappedComponent組件

反向繼承:是一個(gè)函數(shù)接收一個(gè)WrappedComponent組件作為參數(shù)傳入,并返回一個(gè)繼承了該傳入的WrappedComponent組件的類,且在該類的render()方法中返回super.render()方法

注意:反向繼承必須使用類組件,因?yàn)楹瘮?shù)組件沒有this指向

屬性繼承方式的代碼

function Goods(props) {
    console.log(props);
    return (
        <div className="box1">
            <h3 style={{color:props.color}}>Hello Js</h3>
        </div>
    )
}
//高階組件的代碼, 屬性代理的方式
function Color(WrapperComponent){
    return class Color extends React.Component{
        render(){
            console.log(this.props)
            let obj = {color:"#0088dd"}
            return (
                <WrapperComponent {...this.props} {...obj}/>
            )
        }
    }
}
export default Color(Goods);

高階組件我們也可以把他進(jìn)行單獨(dú)的剝離出來,然后把他在各個(gè)組件中使用

HOC.js文件

import React from 'react';
//高階組件的代碼, 屬性代理的方式
export default function Mouse(WrapperComponent){
    return class Mouse extends React.Component{
        constructor(props){
            super(props);
            this.state = {
                x:0,
                y:0,
            }
            this.getMouse();
        }
        getMouse = ()=>{
            document.addEventListener("mousemove",(event)=>{
                this.setState({
                    x:event.clientX,
                    y:event.clientY
                })
            })
        }
        render() {
            // console.log(this.state);
            return (
                <WrapperComponent {...this.props} {...this.state}/>
            )   
        }
    }
}

goods.js文件

import Mouse from "../context/HOC";
function Goods(props) {
    console.log(props);
    let {x,y} = props;
    return (
        <div className="box1">
            <div>
                鼠標(biāo)坐標(biāo):x:{x},y:{y}
            </div>
            <h3 >Hello Js</h3>
        </div>
    )
}
export default Mouse(Goods);

到此這篇關(guān)于React高階組件的使用淺析的文章就介紹到這了,更多相關(guān)React高階組件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • react入門級(jí)詳細(xì)筆記

    react入門級(jí)詳細(xì)筆記

    這篇文章講述了React的基本介紹,基本使用和React相關(guān)js庫.通過這篇文章可以入門React的使用,可以快速上手使用React進(jìn)行代碼的編寫
    2021-06-06
  • React Hooks常用場(chǎng)景的使用(小結(jié))

    React Hooks常用場(chǎng)景的使用(小結(jié))

    這篇文章主要介紹了React Hooks常用場(chǎng)景的使用,根據(jù)使用場(chǎng)景分別進(jìn)行舉例說明,幫助你認(rèn)識(shí)理解并可以熟練運(yùn)用 React Hooks 大部分特性,感興趣的可以了解一下
    2021-04-04
  • React+Typescript創(chuàng)建項(xiàng)目的實(shí)現(xiàn)步驟

    React+Typescript創(chuàng)建項(xiàng)目的實(shí)現(xiàn)步驟

    通過React組件庫和TypeScript的強(qiáng)類型特性,開發(fā)者可以創(chuàng)建出具有優(yōu)秀用戶體驗(yàn)和穩(wěn)定性的Web應(yīng)用程序,本文主要介紹了React+Typescript創(chuàng)建項(xiàng)目的實(shí)現(xiàn)步驟,感興趣的可以了解一下
    2023-08-08
  • React根據(jù)寬度自適應(yīng)高度的示例代碼

    React根據(jù)寬度自適應(yīng)高度的示例代碼

    本篇文章主要介紹了React根據(jù)寬度自適應(yīng)高度的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-10-10
  • React為 Vue 引入容器組件和展示組件的教程詳解

    React為 Vue 引入容器組件和展示組件的教程詳解

    這篇文章主要介紹了React為 Vue 引入容器組件和展示組件的教程詳解,文中很詳細(xì)的給大家介紹了使用容器組件的原因,需要的朋友可以參考下
    2018-05-05
  • React實(shí)現(xiàn)核心Diff算法的示例代碼

    React實(shí)現(xiàn)核心Diff算法的示例代碼

    這篇文章主要為大家詳細(xì)介紹了React如何實(shí)現(xiàn)Diff算法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-04-04
  • 使用react+redux實(shí)現(xiàn)計(jì)數(shù)器功能及遇到問題

    使用react+redux實(shí)現(xiàn)計(jì)數(shù)器功能及遇到問題

    使用redux管理數(shù)據(jù),由于Store獨(dú)立于組件,使得數(shù)據(jù)管理獨(dú)立于組件,解決了組件之間傳遞數(shù)據(jù)困難的問題,非常好用,今天重點(diǎn)給大家介紹使用react+redux實(shí)現(xiàn)計(jì)數(shù)器功能及遇到問題,感興趣的朋友參考下吧
    2021-06-06
  • React?Suspense前后端IO異步操作處理

    React?Suspense前后端IO異步操作處理

    這篇文章主要為大家介紹了React?Suspense前后端IO異步操作處理示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • React 中 setState使用小結(jié)

    React 中 setState使用小結(jié)

    這篇文章主要介紹了React 中 setState使用小結(jié),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-10-10
  • 在React中寫一個(gè)Animation組件為組件進(jìn)入和離開加上動(dòng)畫/過度效果

    在React中寫一個(gè)Animation組件為組件進(jìn)入和離開加上動(dòng)畫/過度效果

    這篇文章主要介紹了在React中寫一個(gè)Animation組件為組件進(jìn)入和離開加上動(dòng)畫/過度效果,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-06-06

最新評(píng)論

沭阳县| 海淀区| 新密市| 原阳县| 临澧县| 陕西省| 盐城市| 郓城县| 连平县| 谢通门县| 吴桥县| 泰顺县| 宁阳县| 铜梁县| 禄丰县| 拉萨市| 德昌县| 广元市| 兴业县| 永州市| 崇阳县| 茌平县| 铁岭县| 霸州市| 申扎县| 蕲春县| 乌拉特中旗| 康保县| 台中县| 柳江县| 南通市| 五峰| 韩城市| 万年县| 阜平县| 田林县| 余庆县| 无为县| 社会| 宁远县| 高碑店市|