ホームページ > ウェブフロントエンド > jsチュートリアル > React の高次コンポーネント (デコレーター) の紹介 (コード例)

React の高次コンポーネント (デコレーター) の紹介 (コード例)

不言
リリース: 2019-03-12 16:17:05
転載
1997 人が閲覧しました

この記事は React の上位コンポーネント (デコレータ) についての紹介 (コード例) です。一定の参考価値があります。必要な友人は参考にしてください。お役に立てれば幸いです。

まず、正式な上位コンポーネントの前に、関数の同様の操作を理解しましょう:

function hello () {
    console.log('hello')
}

function WrapperHello (fn) {
    return function () {
        console.log('before')
        fn && fn()
        console.log('after')
    }
}

hello = WrapperHello(hello)

hello()
ログイン後にコピー

上記のコードの出力は、最初に before を出力し、次に hello を出力し、次に hello を出力します。 hello 関数は、統一ロジックの層を外側にラップして返すのと同じであり、宣言によって元の hello 関数が上書きされます。これが上位コンポーネントの基本原理です。

次に、比較用に基本的な高次コンポーネントを作成しましょう:

import React, { Component, Fragment } from 'react'

function WrapperHello (Comp) {
    class WrapComp extends Component {
        render () {
            return (
                <Fragment >
                    <p >这是高阶组件特有的函数</p >
                    <Comp { ...this.props }/>
                </Fragment >
            )
        }
    }
    
    return WrapComp
}

@WrapperHello
class Hello extends Component {
    render () {
        return (
            <p >Hello</p >
        )
    }
}

export default Hello
ログイン後にコピー

したがって、ここでは、コンポーネントが実際には関数であることを見つけるのは難しくなく、同じアイデアを使用して実行します。統合データ処理、Comp コンポーネントは WrapperHello 関数に渡され、その後、均一に WrapComp 関数を返します。この関数では、Comp がレンダリングされるときに、すべてのデータ相互作用に対して親から渡されたすべての props を渡し、次に Hello 関数に渡します。コンポーネント 上では、単純なステートメントを作成するために @ 記号を使用しています。実際、これは前の関数ラッパーと同じ原則に基づいた宣言です。その後、最終出力コンポーネント Hello の表示には、上位のコンポーネントに ' < が含まれます。 -orderComponent. ;p >高次コンポーネント特有の機能です

'要素です。

上位コンポーネントは主に プロパティ プロキシ 逆継承 の 2 つのタイプに分けられ、例の関数はプロパティ プロキシのタイプに属します。

逆継承の例:

function WrapperHello (Comp) {
    class WrapComp extends Component {
        componentDidMount () {
            console.log('高阶组件新增的生命周期,加载完成')
        }
        
        render () {
            return (
                <Fragment >
                    <Comp { ...this.props }/>
                </Fragment >
            )
        }
    }
    
    return WrapComp
}
ログイン後にコピー

componentDidMount を使用して、元のコンポーネントのライフサイクルで発生するイベントを変更できます。これが逆継承の方法です。

高階関数は関数を返すので、それに応じてラップするだけであることに注意してください。

以上がReact の高次コンポーネント (デコレーター) の紹介 (コード例)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:segmentfault.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート