React双方向データバインディングの原理についての簡単な説明

React双方向データバインディングの原理についての簡単な説明

Vue学習し、 Vueの双方向データバインディングを深く理解している場合は、 Vue 2.0双方向データバインディングの核心は、実際にはObject.definePropertyを通じてデータハイジャックと監視を実現することであると理解するでしょう。

Vue 3.0では、オブジェクト全体を監視し、 Vue2.0を最適化するためにProxyが使用されます。

双方向データバインディングとは

データ モデルとビュー間の双方向バインディング。

データが変更されるとビューも変更され、ビューが変更されるとデータも同期して変更されます。つまり、ユーザーによるビューの変更は自動的にデータ モデルに同期され、データ モデルも同様に変更されると言えます。

双方向データ バインディングの利点: 一方向データ バインディングのように CRUD (作成、取得、更新、削除) 操作を実行する必要がありません。双方向データ バインディングは、フォームで最もよく使用されます。このように、ユーザーがフロントエンド ページで入力を完了すると、ユーザーの入力データが取得され、操作なしでデータ モデルに入力されます。

双方向データバインディングの実装

ただし、 Reactには双方向のデータバインディングメカニズムがないため、自分で実装する必要があります。

データ影響ビュー

実際、 React setState({ })メソッドを使用してデータを変更することでこの機能を実現するのに役立ちました。
( Reactが内部的に提供する変更メソッド) this.state.屬性名= 數據メソッドによるデータの変更は許可されません。

コード

React をインポートします。{ コンポーネント } から 'react' をインポートします。
// antd UI libraryimport { Button } from 'antd'; をインポートします。  
クラス Home は Component を拡張します {
    コンストラクタ(props) {
        スーパー(小道具);
        この状態 = { 
            入力値:''、
         };
    }   
    setValue=()=>{
        this.setState({
            inputVal: 「値の変更」
        })
    }
    与える() {
        戻る (
            <div className="ホーム" >
                ホームコンポーネント<p> {this.state.inputVal}</p>
                 {/* antd UI ライブラリの使用*/
                <Button type="primary" onClick={this.setValue}>データの変更</Button>
            </div>
        );
    }
}
デフォルトのホームをエクスポートします。

効果

ここに画像の説明を挿入

ビューはデータに影響する

Reactが提供するonChage 監聽事件データの動的な入力を実現するために使用されます。同時に、 valueまたはdefaultValueを使用してinputボックスの内容を表示します。表示の便宜上、ここではpタグを使用して内容を表示します。

コード

React をインポートします。{ コンポーネント } から 'react' をインポートします。
import { Button } from 'antd'; // antd UI ライブラリクラス Home extends Component {
    コンストラクタ(props) {
        スーパー(小道具);
        この状態 = { 
            入力値:''、
         };

    }    
    変化 = (ev)=>{
        this.setState({
            入力値:ターゲット値
        })
    }
    与える() {
        戻る (
            <div className="ホーム" >
                ホームコンポーネント <入力 
                    onChange={this.change}
                    // 値 = {this.state.inputVal}
                    デフォルト値={this.state.inputVal}
                    placeholder="テキストコンテンツを入力"
                 />
                <p>&emsp;{this.state.inputVal}</p>
            </div>
        );
    }
}
デフォルトのホームをエクスポートします。

効果

ここに画像の説明を挿入

知らせ:

valueバインディングを使用する場合、 valuedefaultValueのいずれか 1 つだけを使用できます。それ以外の場合は警告が報告されます。

これで、React 双方向データバインディングの原理に関するこの記事は終了です。React 双方向バインディングの関連コンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • React における親コンポーネントと子コンポーネント間の双方向バインディングの問題
  • Vue、Angular、Reactにおける双方向データバインディングの原理の簡単な分析
  • React のプラグインを使用した場合とプラグインなしで双方向バインディングを実装する方法の詳細な説明
  • React は双方向バインディングのサンプルコードを実装します
  • React の双方向バインディングを本当に理解していますか?

<<:  ボタンと入力タイプの違いと注意点

>>:  VMware esxi6.5 のインストールと使用の詳細な手順

推薦する

CSS (カスケーディング スタイル シート) の一般的な用語の概要

CSS を使用する場合は、DOCTYPE (ドキュメント タイプ定義) を記述することを忘れないでく...

Apache POIの基本的な使い方の詳しい説明

目次基本的な紹介入門テスト (Excel ファイルからのデータの読み取り)ステップ1: Maven座...

MySQL5.6.17データベースをインストールするときにMy.iniファイルを構成する方法

最近、プロジェクトの開発時に MySql データベースを使用しました。MySql に関する記事をいく...

JSはスネークゲームを実装する

目次1. 初期化構造2. 蛇の色のレンダリング3. ヘビの動き4. ヘビの死を判定する方法 ヘビの死...

Vueはファイルのアップロードとダウンロード機能を実装します

この記事では、ファイルのアップロードとダウンロード機能を実装するためのVueの具体的なコードを例とし...

コンパイル/サーバーなしでブラウザにCommonJSモジュールを実装する

目次導入1. one-click.jsとは2. パッケージングツールはどのように機能しますか? 3....

Webデザインの経験: Webコードを効率的に書く

本来、この第 7 章では、デザインにおけるレイヤーと空間テクニックについて深く議論するはずです。しか...

Linux に nodejs 環境とパス構成をインストールするための詳細な手順

Linux に Node.js をインストールする方法は 2 つあります。1 つは簡単で、解凍して使...

MySQL がタイムスタンプを使用するときにタイムゾーンの問題を無視できるのはなぜですか?

私はいつも、なぜMySQLデータベースのtimestampタイムゾーンの問題を無視できるのか疑問に思...

MySQL マスタースレーブ構成の学習ノート

● 新しいプロジェクトのセキュリティを確保するためにクラウド データを購入する予定でした。 Alib...

HTMLは入力完了を検出する機能を実装する

入力が進行中かどうかを検出するには、「onInput(event)」を使用しますコンテンツが変更され...

HTMLはWEB標準の開発の中心的な基盤です

HTML 中心のフロントエンド開発は、ほぼ Web 標準の意味です。共通しているのは「分離」という考...

Centos8.2 クラウド サーバー環境に Tomcat8.5 をインストールするための詳細なチュートリアル

Tomcatをインストールする前に、まずJDK環境をインストールしてくださいLinux サーバー上で...

デザインにおいて無視できないインタラクティブデザインにおける製品状態の分析

製品デザインのプロセスにおいて、デザイナーは常に写真を非常に美しくすることを好みます。仮想ページのコ...

MySQL スケジュールバックアップタスクの簡単な分析

導入実稼働環境では、データの損失を回避するために、通常、データベースは定期的にバックアップされます。...