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 5.7.20 無料インストールバージョンの設定方法グラフィックチュートリアル

インターネット上で多くの関連チュートリアルを見てきましたが、インストール プロセスにはまだいくつかの...

ファイアウォールルールの設定とコマンド(ホワイトリスト設定)の詳しい説明

1. ファイアウォールルールを設定する例1: ポート8080を外部に公開する ファイアウォールコマン...

Linux calコマンドの使用

1. コマンドの紹介cal (カレンダー) コマンドは、現在の日付または指定された日付のグレゴリオ暦...

UI を通じて Docker を管理する方法

Docker はますます多くのシナリオで使用されています。コマンドラインツールに慣れていない人にとっ...

jQueryはネストされたタブ機能を実装します

この記事では、ネストされたタブ機能を実装するためのjQueryの具体的なコードを参考までに紹介します...

vue + Electron でデスクトップ アプリケーションを作成するためのサンプル コード

1.vueパッケージングここでは、vueネイティブパッケージングコマンドを使用してvueプロジェクト...

Vue3 における親コンポーネントと子コンポーネント間の値の転送の詳細な説明

vue3 が誕生してからかなり時間が経ち、筆者も最近になって vue3 を学び始めました。 vue2...

Vueコンポーネント化の基本的な使用方法の詳細

目次1. コンポーネント化とは何ですか? 2. 基本的な使い方序文:場合によっては、HTML 構造化...

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

説明する: fuser は、現在ディスク上のファイル、マウント ポイント、さらにはネットワーク ポー...

Nginxにモジュールを動的に追加する方法

前面に書かれた多くの場合、現在のプロジェクトの状況とビジネスニーズに基づいて Nginx をインスト...

CSSは背景画像の画面適応を実現する

ログインページなどのホームページを作成する場合、大きな背景画像を配置する必要があり、さまざまな画面の...

threejs でリアルタイムポリゴン屈折を実装する方法

目次序文ステップ1: セットアップと前方屈折ステップ2: 反射とフレネル方程式ステップ3: 多面屈折...

Win10にCentOS7仮想マシンをインストールする

1. VMware Workstation 64バージョンをダウンロードするhttps://www....

HTML タグでの this の使用法の紹介

例えば:コードをコピーコードは次のとおりです。 <html> <ヘッド> &...

ウェブページ制作TDは隠し表示もオーバーフロー可能

おそらく、この記事にこのようなタイトルを付けると、誰かがこう尋ねるでしょう。「なぜまだテーブルに注目...