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 ステートメントの配置と概要の紹介

推薦する

MySQL での r2dbc の使用に関する詳細な理解

導入MySQL は、私たちが日常業務で使用する非常に一般的なデータベースです。MySQL は現在 O...

CSSトランジションは高さを変更することで要素を拡大したり縮小したりします。

一般的な開発ニーズとして、要素の一部を必要になるまで折りたたんでおきたいことが挙げられます。 Boo...

Linux での Hbase のインストールと設定のチュートリアル

目次Linux での Hbase のインストールと設定1. Hbaseインストールパッケージをダウン...

ハイパーリンクを開くターゲットのテスト

リンクのターゲット属性は、リンクが開く場所を決定します。その値は通常、_blank、_self、_p...

MySQL 自動インクリメント ID 枯渇の例

ディスプレイ定義IDテーブルに定義された自動増分IDが上限に達した場合、次のIDを申請する際に得られ...

Linuxでホスト名を変更する方法

1. 現在のホスト名を表示する [root@fangjian ~]# ホスト名ctl 静的ホスト名:...

Win10 MySQLでCSVをエクスポートする2つの方法

Win10 で csv をエクスポートする方法は 2 つあります。1 つ目はツールを使用することです...

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

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

img usemap 属性 中国地図リンク

HTML img タグ: Web ページに導入される画像を定義します。興味深い usemap 属性も...

ECMAScript のイテレータの詳細な説明

目次序文以前のバージョンイテレータパターンイテレータファクトリ関数イテレータプロトコル最後に序文多く...

Docker で Java 8 Spring Boot アプリケーションを開発する方法

この記事では、ローカル マシンに Java 8 をインストールせずに、Java 8 を使用して簡単な...

LinuxでRPMを使用してmysql5.7.17をインストールする

LinuxでのMySQL5.7 rpmのインストール方法を参考までに記録します。具体的な内容は以下の...

Docker データボリュームコンテナの作成と使用状況分析

データ ボリューム コンテナーは、データ ボリュームをマウントするために特別に使用されるコンテナーで...

WeChatアプレット開発の共通機能と使用方法のまとめ

ここでは、主に小さなプログラムの開発プロセスでよく使われる、非常に実用的な機能ポイントをいくつか整理...

HTML テーブル マークアップ チュートリアル (5): ライト ボーダー カラー属性 BORDERCOLORLIGHT

表では、左上の境界線の色を個別に定義したり、セルの右下の境界線の色を定義したりできます。これら 2 ...