ホームページ Java &#&チュートリアル Javaレンズを通して反応を見る

Javaレンズを通して反応を見る

Oct 21, 2024 pm 04:15 PM

私たちのコーディング ブートキャンプでは、React をスピードランしてラボで汗を流しているときに、インストラクターがこう言いました。「目を細めて見ると、React は Java によく似ています。」

最初は、ただのキャッチーで面白いフレーズでした。 ?しかし、つい最近、私は個人的な Google マップ計算プロジェクトに取り組んでいるときに React を再検討しました。何日も深く掘り下げると、それらの類似点のいくつかが明らかになり始めました。

これらの接続を詳しく調べて、Java の基本概念が React の理解をどのように明らかにするかを見てみましょう。 ?

seeing react through java lens

目次

  1. Java メイン クラスとしての App.jsx (psvm)

  2. Java ゲッターおよびセッターとしてフックを使用した状態管理

  3. Java クラスとしてのコンテナ

  4. Java メソッドとしてのコンポーネント

  5. React のコンポーネントへの復帰

  6. Java メソッドのパラメータとしての小道具

  7. 値を返す Java メソッドとしてのコールバック関数


1. Java メイン クラスとしての App.jsx (psvm)

Java:

Java では、メイン クラスがプログラムのエントリ ポイントとして機能し、プログラムの実行を開始します。

たとえば、さまざまなクラスのオブジェクトをインスタンス化し、それぞれのメソッドを呼び出すことができます。

1

2

3

4

5

6

7

8

public class Main {

    public static void main(String[] args) {

        Home home = new Home();

        home.render();

        About about = new About();

        about.show();

    }

}

ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

反応:

同様に、React アプリケーションでは、App.jsx ファイルがメインのアプリケーション フローを調整することで同等の役割を果たします。

Java の main メソッドが複数の関数を呼び出すことができるのと同じように、App.jsx はアプリケーションのルーティングと現在の状態に基づいてすべてのコンポーネントをレンダリングする責任があります。

1

2

3

4

<Routes>

  <Route exact path="/" element={<Home />} />

  <Route path="/about" element={<About />} />

</Routes>

ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

App.jsx の上記の React の例では、return ステートメントでレンダリングされるコンポーネントは、Java でのメソッドの呼び出しまたはオブジェクトの初期化のプロセスを反映しています。

この場合、コンテナ <ホーム />ページは Web ページの URL パスに基づいてレンダリングされます。


2. Java ゲッターおよびセッターとしてのフックを使用した状態管理

Java:
Java では、変数とパブリック getter/setter メソッドを使用してプロパティを管理し、ユーザーのユーザー名などの属性のプロパティを取得および設定します。

1

2

3

4

5

6

7

8

9

private String username;

 

public String getUsername() {

    return this.username;

}

 

public void setUserData(String username) {

    this.username = username;

}

ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

反応:

React の useState フックは、Java が getter メソッドと setter メソッドを使用してオブジェクトのプロパティを管理するのと同じように、アプリケーションの状態を処理します。

React の useState フックを使用すると、クラス内の Java のインスタンス変数と同様に、時間の経過とともに変化する可能性のある状態変数を宣言できます。

1

const [username, setUsername] = useState("");

ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

上記の例:

  • setUserName はセッター メソッドとして機能し、ユーザー名の更新を可能にします。 useState("") はユーザー名が空の文字列として初期化されることを意味しますが、setUserName は値を更新します。

以下には、Web フォームの変更を検出してユーザー情報を更新し、ユーザー名の値をユーザーが入力した値に更新する関数 handleInputChange があります。

1

2

3

4

5

6

7

8

public class Main {

    public static void main(String[] args) {

        Home home = new Home();

        home.render();

        About about = new About();

        about.show();

    }

}

ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
  • ユーザー名へのアクセスはゲッターとして考えることができます。

コンポーネント内でユーザー名を参照するときは常に、ゲッターを使用してその値にアクセスすることになります。たとえば、私の Web ページでは次のようにユーザー名をレンダリングできます:

1

2

3

4

<Routes>

  <Route exact path="/" element={<Home />} />

  <Route path="/about" element={<About />} />

</Routes>

ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

3. Java クラスとしてのコンテナ

Java:
Java では、クラスは関連するタスクとデータをグループ化します。これらは、アプリケーション内で情報がどのように流れるかを管理するのに役立ちます。

この例では、Calculator クラスが計算を処理し、結果を保存します。

1

2

3

4

5

6

7

8

9

private String username;

 

public String getUsername() {

    return this.username;

}

 

public void setUserData(String username) {

    this.username = username;

}

ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

反応:

同様に、React では、コンテナーがアプリケーションのデータをコンポーネントに接続することで重要な役割を果たします。 API 呼び出しからのデータの取得やアプリの状態の管理などを処理します。

この例では、Calculator コンテナーが入力値と結果の状態を管理します。

1

const [username, setUsername] = useState("");

ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

4. Java メソッドとしてのコンポーネント

Java:

Java のメソッドは、ユーザー入力の処理など、特定のアクションを実行します。これらのメソッドは、アプリケーションのさまざまな機能を容易にするために、必要に応じて呼び出すことができます。

1

2

3

const handleInputChange = (event) => {

    setUserName(event.target.value);

};

ログイン後にコピー
ログイン後にコピー

反応:

Java メソッドが小規模で集中的なタスクであるのと同様に、React コンポーネントも同様の目的を果たし、ユーザー インターフェイスの基本的な構成要素として機能します。

各コンポーネントは特定の機能用に作成されており、アプリケーション全体で再利用できます。

以下の ManualFilter コンポーネントは、ユーザー向けのフィルタリング オプションのみに焦点を当てています。ユーザーが特定のカテゴリを選択できるようにするチェックボックスが表示されます。

このコンポーネントは、UserForm コンテナ ページ内で呼び出すことができます。

1

<p>Welcome to our page {username}</p>

ログイン後にコピー
ログイン後にコピー

5. React のコンポーネントへの復帰

Java:

Java では、メソッドは、プログラムの別の部分が出力を生成するために使用する値を返すことがあります。

たとえば、renderOutput メソッドはユーザーの目標を含む文字列を返し、それをプログラム内の他の場所に表示できます。

1

2

3

4

5

6

7

8

9

10

11

public class Calculator {

    private int result;

 

    public void calculateSum(int a, int b) {

        result = a + b;

    }

 

    public int getResult() {

        return result;

    }

}

ログイン後にコピー
ログイン後にコピー

反応:

React コンポーネントの return ステートメントは、ユーザー インターフェイスをレンダリングするために重要です。 React では、コンポーネントから返される内容によって、ユーザーが画面に表示する内容が決まります。

これは、前述のように、プログラムの別の部分で処理または表示することを目的としたデータを返す Java のメソッドと似ています。

この例では、UserGoal コンポーネントはユーザーの目標を表示する段落要素を返します。

1

2

3

4

5

6

7

8

public class Main {

    public static void main(String[] args) {

        Home home = new Home();

        home.render();

        About about = new About();

        about.show();

    }

}

ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

6. Java メソッドのパラメータとしての Props

Java:

Java メソッドに引数を渡すことができ、その引数は呼び出し元オブジェクトの状態や動作に影響を与えることができます。

たとえば、メッセージをパラメータとして受け取る単純な Java メソッドを考えてみましょう。受信するメッセージは、コンソールに表示される内容に影響します。

1

2

3

4

<Routes>

  <Route exact path="/" element={<Home />} />

  <Route path="/about" element={<About />} />

</Routes>

ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

反応:

React では、コンポーネントは Java メソッドのパラメーターに似た props を受け取ることができます。 React コンポーネントは props を使用してそのコンテンツと機能を決定します。

プロップは、コンポーネントがどのように動作するか、およびコンポーネントが表示するデータを制御します。

MessageDisplay 子コンポーネントにメッセージを渡す WelcomePage という親コンポーネントがあるとします。

言い換えると、MessageDisplay が、メッセージが表示される WelcomePage ランディング ページ上のセクションであると想像してください。

親コンポーネントでメッセージを定義し、それを MessageDisplay コンポーネントにプロップとして渡すことができます。

1

2

3

4

5

6

7

8

9

private String username;

 

public String getUsername() {

    return this.username;

}

 

public void setUserData(String username) {

    this.username = username;

}

ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

MessageDisplay コンポーネントはこの prop を受け取り、レンダリングします。

1

const [username, setUsername] = useState("");

ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

7. 値を返す Java メソッドとしてのコールバック関数

Java:

Java では、特定のアクションを実行して呼び出し元に値を返すメソッドがクラス内に存在することがよくあります。たとえば、2 つの数値の差を計算するメソッドを備えた Calculator という名前のクラスがあるとします。

1

2

3

const handleInputChange = (event) => {

    setUserName(event.target.value);

};

ログイン後にコピー
ログイン後にコピー

^別のクラスで、Calculator クラスのインスタンスを作成し、そのメソッドを呼び出します。

反応:

React も同様の概念に従いますが、コンポーネント間の関係に焦点を当てています。

子コンポーネントを含む親コンポーネントがある場合、コールバック関数はそれらの間の通信を容易にするのに役立ちます。 (覚えておいてください: 親は他のコンポーネントを保持するメイン コンテナです - メッセージ ボックスのサブコンポーネントを持つ親「ランディング ページ」の前述の例と同様です)

たとえば、計算されたデータを親コンポーネントに送信する必要がある ChildComponent があるとします。

以下では、handleCalculationResult 関数を prop として親から子に渡します。

この関数はコールバックのように機能します:

1

<p>Welcome to our page {username}</p>

ログイン後にコピー
ログイン後にコピー

以下では、onCalculate が親コンポーネントから ChildComponent で受け取られるコールバック関数であることがわかります。

ChildComponent のボタンをクリックすると、計算が実行され、onCalculate を使用して結果が親に返されます。これは、Java メソッドが呼び出し元に値を返す方法を模倣しています。

1

2

3

4

5

6

7

8

9

10

11

public class Calculator {

    private int result;

 

    public void calculateSum(int a, int b) {

        result = a + b;

    }

 

    public int getResult() {

        return result;

    }

}

ログイン後にコピー
ログイン後にコピー

このようにして、親はアプリケーション全体の状態と動作を管理し、子は特定のアクション (この場合は計算) に焦点を当てます。

以上がJavaレンズを通して反応を見るの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

2025年のトップ4 JavaScriptフレームワーク:React、Angular、Vue、Svelte 2025年のトップ4 JavaScriptフレームワーク:React、Angular、Vue、Svelte Mar 07, 2025 pm 06:09 PM

この記事では、2025年の上位4つのJavaScriptフレームワーク(React、Angular、Vue、Svelte)を分析し、パフォーマンス、スケーラビリティ、将来の見通しを比較します。 強力なコミュニティと生態系のためにすべてが支配的なままですが、彼らの相対的なポップ

Spring Boot Snakeyaml 2.0 CVE-2022-1471問題修正 Spring Boot Snakeyaml 2.0 CVE-2022-1471問題修正 Mar 07, 2025 pm 05:52 PM

この記事では、リモートコードの実行を可能にする重大な欠陥であるSnakeyamlのCVE-2022-1471の脆弱性について説明します。 Snakeyaml 1.33以降のSpring Bootアプリケーションをアップグレードする方法は、このリスクを軽減する方法を詳述し、その依存関係のアップデートを強調しています

Javaのクラスロードメカニズムは、さまざまなクラスローダーやその委任モデルを含むどのように機能しますか? Javaのクラスロードメカニズムは、さまざまなクラスローダーやその委任モデルを含むどのように機能しますか? Mar 17, 2025 pm 05:35 PM

Javaのクラスロードには、ブートストラップ、拡張機能、およびアプリケーションクラスローダーを備えた階層システムを使用して、クラスの読み込み、リンク、および初期化が含まれます。親の委任モデルは、コアクラスが最初にロードされ、カスタムクラスのLOAに影響を与えることを保証します

カフェインやグアバキャッシュなどのライブラリを使用して、Javaアプリケーションにマルチレベルキャッシュを実装するにはどうすればよいですか? カフェインやグアバキャッシュなどのライブラリを使用して、Javaアプリケーションにマルチレベルキャッシュを実装するにはどうすればよいですか? Mar 17, 2025 pm 05:44 PM

この記事では、カフェインとグアバキャッシュを使用してJavaでマルチレベルキャッシュを実装してアプリケーションのパフォーマンスを向上させています。セットアップ、統合、パフォーマンスの利点をカバーし、構成と立ち退きポリシー管理Best Pra

node.js 20:キーパフォーマンスが向上し、新機能 node.js 20:キーパフォーマンスが向上し、新機能 Mar 07, 2025 pm 06:12 PM

node.js 20は、V8エンジンの改善、特により速いガベージコレクションとI/Oを介してパフォーマンスを大幅に向上させます。 新機能には、より良いWebセンブリのサポートと洗練されたデバッグツール、開発者の生産性とアプリケーション速度の向上が含まれます。

Iceberg:データレイクテーブルの未来 Iceberg:データレイクテーブルの未来 Mar 07, 2025 pm 06:31 PM

大規模な分析データセットのオープンテーブル形式であるIcebergは、データの湖のパフォーマンスとスケーラビリティを向上させます。 内部メタデータ管理を通じて、寄木細工/ORCの制限に対処し、効率的なスキーマの進化、タイムトラベル、同時wを可能にします

キュウリのステップ間でデータを共有する方法 キュウリのステップ間でデータを共有する方法 Mar 07, 2025 pm 05:55 PM

この記事では、キュウリの手順間でデータを共有する方法、シナリオコンテキスト、グローバル変数、引数の合格、およびデータ構造を比較する方法を調べます。 簡潔なコンテキストの使用、記述など、保守性のためのベストプラクティスを強調しています

Javaで機能的なプログラミング技術を実装するにはどうすればよいですか? Javaで機能的なプログラミング技術を実装するにはどうすればよいですか? Mar 11, 2025 pm 05:51 PM

この記事では、Lambda式、Streams API、メソッド参照、およびオプションを使用して、機能プログラミングをJavaに統合することを調べます。 それは、簡潔さと不変性を通じてコードの読みやすさと保守性の改善などの利点を強調しています

See all articles