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

推薦する

Mysql5.7 で JSON 操作関数を使用する手順

序文JSON は、言語に依存しないテキスト形式を使用する軽量のデータ交換形式で、XML に似ています...

MySQL統計データテーブルの設計方法

目次リアルタイム更新は必要ですか?マテリアライズド ビュー ツール (Flexviews)カウントテ...

MySQLにおける分散ロックの考え方をDBの助けを借りて詳しく説明します

序文スタンドアロン ロックであっても分散ロックであっても、共有データに基づいて現在の操作の動作を判断...

VMware 仮想マシンでの CentOS7 ネットワーク構成 (ホストのワイヤレス インターネット アクセス)

CentOS7 システムを使用するのは今回が初めてで、ネットワーク構成を行う際に多くの問題が発生し...

Unicode における CJK (中国語、日本語、韓国語の統合表意文字) 文字の概要

CJK は CJK Unified Ideographs の略称で、「中国語、日本語、韓国語の統一表...

CentOS7でFTPサーバーを設定する方法

FTP は主にファイル転送に使用され、Linux では vsftpd で実装されるのが一般的です。F...

Vueモバイル端末が指のスライド効果を実現

この記事の例では、Vueモバイル端末で指のスライド効果を実現するための具体的なコードを紹介します。具...

HTMLはキャンバスを使用して箇条書きスクリーン機能を実装します

導入最近、大きな課題をこなす際に、弾幕プレイヤーを作る必要がありました。他の人のソースコードを借りて...

HTML は CSS スタイルと JS スクリプトを動的に読み込みます。例

1. スクリプトを動的に読み込むウェブサイトの需要が高まるにつれて、スクリプトの需要も徐々に増加しま...

Nodejs のグローバル変数とグローバルオブジェクトの知識ポイントと使用方法の詳細

1. グローバルオブジェクトすべてのモジュールは呼び出すことができます1) global: ブラウザ...

Linuxでmore、less、catコマンドを使用してファイルの内容を表示します

Linux では、cat、more、less の各コマンドを使用してファイルの内容を表示できます。c...

Centos 7.4 でリモート アクセス制御を実装する方法

1. SSHリモート管理SSH はセキュア チャネル プロトコルであり、主にリモート ログイン、リモ...

Linux での screen コマンドの使用方法の詳細な説明

GUNスクリーン:公式サイト: http://www.gnu.org/software/screen...

一般的なDockerコマンドの詳細な説明

1. ヘルプコマンド1. 現在のDockerバージョンを表示する docker バージョン2. イメ...

MySQL無料インストール版のパスワード設定に関する詳細なチュートリアル

方法1: SET PASSWORDコマンドを使用する MySQL -u ルート mysql> ...