React における同期および非同期 setState の問題のコード分析

React における同期および非同期 setState の問題のコード分析

React は Facebook の社内プロジェクトとして始まりました。 React の出現は革命的なイノベーションです。React は破壊的なフロントエンド フレームワークです。 React は公式には、ユーザー インターフェイスを作成するための宣言型で効率的かつ柔軟な JavaScript ライブラリとして紹介されています。React の主な機能は UI の構築ですが、プロジェクトが徐々に成長し、React はフロントエンドとバックエンドの両方をカバーする Web アプリ ソリューションになりました。

Angular はウォッチャー オブジェクトを使用し、Vue はオブザーバー モードを使用し、React は状態を使用します。それぞれに特徴があります。良いも悪いもなく、ニーズの違いによって選択が異なるだけです。

Reactの公式サイト: https://reactjs.org/GitHub

アドレスは https://github.com/facebook/react です。

1. Reactでは、onClick、onChangeなどのReactによって制御されるイベント処理関数、setStateは非同期です。

React をインポートします。{ コンポーネント } から 'react' をインポートします。

デフォルトクラス Input をエクスポートし、Component を拡張します {
    コンストラクタ(props) {
        スーパー(小道具);    

        this.state={
            名前: 'こんにちは'
        }    
    }

    _onChange(e) {
        this.setState({
            名前:'世界'
        })

        console.log(this.state.name); //こんにちは
    }

  与える () {
    戻る (
      <div クラス名 = 'cp'>
        <input className='cp-input' value={this.state.name} onChange={this._onChange.bind(this)} type="text"/>                
      </div>
    );
  }
}

2. addEventListenerなどのネイティブJSリスニングイベントでは、setStateは同期的です。

React をインポートします。{ コンポーネント } から 'react' をインポートします。

デフォルトクラス Input をエクスポートし、Component を拡張します {
    コンストラクタ(props) {
        スーパー(小道具);    

        this.state={
            名前: 'こんにちは'
        }    
    }

    _onChange(e) {
        // 何かをする
    }


    コンポーネントマウント() {
        入力を document.querySelector('.cp-input') にします。
        input.addEventListener('クリック', ()=>{
            this.setState({
                名前:'世界'
            })

            console.log(this.state.name); //ワールド
        })
    }

  与える () {
    戻る (
      <div クラス名 = 'cp'>
        <input className='cp-input' value={this.state.name} onChange={this._onChange.bind(this)} type="text"/>                
      </div>
    );
  }
}

3. setTimeoutではsetStatetは同期的である

React をインポートします。{ コンポーネント } から 'react' をインポートします。

デフォルトクラス Input をエクスポートし、Component を拡張します {
    コンストラクタ(props) {
        スーパー(小道具);    

        this.state={
            名前: 'こんにちは'
        }    
    }

    _onChange(e) {
        // 何かをする
    }


    コンポーネントマウント() {
        タイムアウトを設定します(()=>{
            this.setState({
                名前:'世界'
            })
            console.log(this.state.name); //ワールド
        }, 1000)
    }

  与える () {
    戻る (
      <div クラス名 = 'cp'>
        <input className='cp-input' value={this.state.name} onChange={this._onChange.bind(this)} type="text"/>                
      </div>
    );
  }
}

上記はReactのsetStateの同期と非同期のコードを詳細に解析した内容です。ReactのsetStateの同期と非同期の詳細については、123WORDPRESS.COMの他の関連記事に注目してください。

以下もご興味があるかもしれません:
  • React における setState の同期または非同期の問題の理解
  • ReactでのsetStateの使用と同期と非同期の使用
  • React での setState 同期および非同期シナリオの使用

<<:  CentOS7におけるKVM仮想化の基本管理の詳しい説明

>>:  MySQL ステートメントの配置と概要の紹介

推薦する

JavaScript でツリー構造を構築するための効率的なアルゴリズムについての簡単な説明

目次導入アイデアID配列インデックスのマッピング関係を確立するツリー構造の構築原理要約する導入組織階...

VMware Tools を最初からインストールするための詳細な手順 (グラフィック チュートリアル)

VMware Tools は VMware 仮想マシンに付属するツールで、VirtualBox (...

Vue のルータールーティングの 2 つのモード (ハッシュと履歴) の詳細な説明

ハッシュモード(デフォルト)動作原理:ウェブページのハッシュ値の変化を監視する—> onhas...

MySQL 5.7.18 アーカイブ圧縮版のインストールチュートリアル

この記事では、MySQL 5.7.18アーカイブ圧縮版をインストールする具体的な方法を参考までに紹介...

JavaScript でのプロキシの使用を理解するための記事

目次エージェントとは何かプロキシの基礎知識ハンドラオブジェクトのメソッドプロキシでできること参考文献...

Navicat がデータベース データ構造をインポートする際に発生するエラー datetime(0) の SQL レポートの問題を解決します。

エラー発生: MySQL 5.7 から SQL にデータベースをエクスポートし、それを MySQL ...

Node.js のフロントエンドとバックエンドのインタラクションによるユーザーログインの実装の実践

目次1. プロジェクト要件次にコーディングを始める1. フロントエンドページを作成する(CSSスタイ...

JavaScript 関数のカリー化

目次1 関数カリー化とは何ですか? 2 カレーの役割と特徴2.1 パラメータの再利用2.2 早期復帰...

Dockerイメージを完全にアンインストールする手順

1. docker ps -a 実行中のイメージプロセスを表示する [root@mylinux~]#...

MySQL binlog の使用方法の詳細な説明

binlog は、MySQL のすべての DML 操作を記録するバイナリ ログ ファイルです。 bi...

MYSQL の 3 つのツリー構造テーブル設計の長所と短所の簡単な分析と共有

目次導入質問設計 1: 隣接リストテーブルデザインSQL の例デザイン 2: パスの列挙テーブルデザ...

最新のmysql-5.7.21のインストールと設定方法

1. ダウンロードしたMySQLの圧縮パッケージをインストールディレクトリに解凍します。 2. 新し...

魔法のMySQLデッドロックトラブルシューティング記録

背景MySQL のデッドロックについて言えば、私は以前 MySQL のロックに関する基本的な紹介記事...