React の高次コンポーネント (デコレーター) の紹介 (コード例)
この記事は 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 サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









HTML の表の境界線に関するガイド。ここでは、HTML でのテーブルの境界線の例を示しながら、テーブル境界線を定義する複数の方法について説明します。

HTML マージン左のガイド。ここでは、HTML margin-left の概要とその例、およびそのコード実装について説明します。

これは、HTML でのネストされたテーブルのガイドです。ここでは、テーブル内にテーブルを作成する方法をそれぞれの例とともに説明します。

HTML テーブル レイアウトのガイド。ここでは、HTML テーブル レイアウトの値と例および出力について詳しく説明します。

HTML 入力プレースホルダーのガイド。ここでは、コードと出力とともに HTML 入力プレースホルダーの例について説明します。

HTML でのテキストの移動に関するガイド。ここでは、概要、マーキー タグが構文でどのように機能するか、および実装例について説明します。

HTML オンクリック ボタンのガイド。ここでは、それらの紹介、動作、例、およびさまざまなイベントでの onclick イベントについてそれぞれ説明します。
