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 のインストールと使用の詳細な手順

推薦する

Nginx で Http、Https、WS、WSS を設定する方法

前面に書かれた今日のインターネット分野では、Nginx は最も広く使用されているプロキシ サーバーの...

ファイル共有サーバーを構築するための samba + OPENldap の詳細な説明

ここでは、samba (ファイル共有サービス) v4.9.1 + OPENldap (バックエンド ...

Linux コマンドで .sql ファイルをエクスポートおよびインポートする方法

この記事では、Linux コマンドを使用して .sql ファイルをエクスポートおよびインポートする方...

MySQLログシステムの使い方に関する簡単なチュートリアル

目次序文1. エラーログ2. バイナリログ1. バイナリログを有効にする2. バイナリログ形式3. ...

HTML+CSSは、要素の位置までスクロールして読み込みアニメーション効果を表示します。

要素までスクロールするたびに読み込みアニメーションを追加するにはどうすればよいですか?初期パラメータ...

Webデザイナーの成長体験

<br />まず最初に、私はこのグループの中では完全な新人だということを述べなければなり...

MySQLでテーブルインデックスを構築する方法

目次複数の種類のフィルタリングをサポート複数の範囲のクエリを避ける並べ替えを最適化するインデックスの...

MySQL のデッドロック チェックとデッドロック除去の例の詳細な説明

1. クエリプロセスプロセスリストを表示2. 対応するプロセスを照会し、IDを強制終了します。検証(...

情報製品の読書リストのインタラクティブなデザインに関する考えと経験の共有

リストは、テーブルをコンテナーとして使用するテキストまたはグラフの形式として定義されます。商品の種類...

独自のサーバーを素早く構築する方法の詳細なチュートリアル(Java 環境)

1. サーバーの購入1. 私はAlibaba Cloudのサーバーを選択しました。学生向けで月額9...

CSS はモバイル互換性の問題を解決するために 0.5px の線を実装します (推奨)

【コンテンツ】: 1.背景画像のグラデーションスタイルを使用する2. スケールを使ってズームできる...

この記事では、CSSのようなJSモジュールをインポートする方法を説明します。

目次序文構築可能なスタイルシートとは何ですか? CSSモジュールスクリプトの使用インポートアサーショ...

NginxはIP経由の直接アクセスを禁止し、カスタム500ページにリダイレクトします

設定ファイルに直接 サーバー{ listen 80 default; # IPへの直接アクセスを禁止...

Linux bash: ./xxx: バイナリ ファイルを実行できません エラー

今日、Ubuntu 用の小さなツールを顧客に送りましたが、ユーザーはそれを受け取った後、実行できませ...