React.js フレームワーク Redux 基本ケースの詳細な説明

React.js フレームワーク Redux 基本ケースの詳細な説明

react.js フレームワーク Redux

https://github.com/reactjs/redux

インストール:

npm インストール redux react-redux
#Reactをベースに、すでにインストール済み

Redux リファレンスドキュメント:
http://redux.js.org/

Reduxコアコンセプト: ストア

単純に言えば、各コンポーネントのStateや自分で定義した独立した状態を保存し、状態の読み取り、更新、監視などの統一された操作を実行するために使用されると理解できます。
http://redux.js.org/docs/basics/Store.html

這里寫圖片描述

減らす

公式によると、redux の基本的な使用法は次のようになります。

「redux」から {createStore} をインポートします。
「./reducers」からtodoAppをインポートします。
store = createStore(todoApp); を作成します。

createStore()に渡されるパラメータは関数 Function です。
Reduxのコンセプトは「Reduce」と呼ばれます。
Reduce の基本形式は次のとおりです。

関数 myFun(状態,アクション){
  // ...
}

もちろん、esmascript 2015 の矢印関数形式を使用して定義することもできます。

実践演習

1.まずReduceを定義しましょう

インフォリデュース:

//テストデータ let info = {
    title:"テストタイトル",
    クリック数:0
};

// パラメータ hull default (state = info, action) を通じてデータをエクスポートします =>{


    return state; // 返される値はテストデータです}

2. Reduceの準備ができました。Reduxを使い始めましょう

「./../redux/InfoReduce」からInfoReduceをインポートします。

「redux」から {createStore} をインポートします。
store = createStore(InfoReduce);

3. Redux の非常に重要なコンセプトstoreが作成されました。コンポーネントでどのように使用するかを見てみましょう。

// InfoDetailというコンポーネントを定義します。class InfoDetail extends React.Component{
    //コンストラクタ(props) {
        スーパー(小道具);
        // 初期状態 this.state = {
            infoData:store.getState() //ストア オブジェクト メソッドを通じてデータを取得します};
      }


        与える(){
            <div> を返す
                <h2>ニュースタイトル: {this.state.infoData.title}</h2>
                <span>クリック数: {this.state.infoData.clicknum}</span>
                <p><button>クリック音量を変更する</button></p>
            </div>
        }
}

store.getState()を通じてデータを取得します。

這里寫圖片描述

この時点で、基本的に次のことを理解しました。Reducers は、新しい状態を生成して Store に渡す指定された関数であり、コンポーネントは Store を通じて状態を取得してコンポーネント データを更新します。

行動を理解する

actionに関する公式ドキュメント:
アクション

実際、「アクション」という言葉から、それがビジネスを処理するために使用される操作であると推測できます。

前のコードでのactionはどこにありますか?
Reducer 関数を定義する場合、2 番目のパラメーターは次のようになります。

エクスポート デフォルト (状態、アクション)=>{}

1.アクションは操作なので、コンポーネントのイベント処理関数で必要になります。

<button onClick={this.addClick.bind(this)}>クリック数を変更する</button>

クリックイベント関数addClickをボタンにバインドする

2. addClick 関数で何が起こっているか見てみましょう。

        追加クリック(){
            //状態を変更する
            ストア.ディスパッチ({
                タイプ:"INFO_CLICK"
            })

            this.setState({ //状態を更新する
                情報データ:store.getState()
            })
        }

this.setState()状態を更新するために使用されることを以前に学習しました。
store.dispatch()は Redux 内のものです。このメソッドは実際にactionをディスパッチします。
タイプ別に区別します。

3. ニーズに応じて、アクションが処理する必要があるビジネスロジックはクリック数を増やすことです。

//テストデータ let info = {
    title:"テストタイトル",
    クリック数:0
};

// パラメータ hull default (state = info, action) を通じてデータをエクスポートします =>{

    if (action.type == "INFO_CLICK"){
        oldNum = state.clicknum とします。
        古い数値++;

        // 新しいデータを返します return Object.assign({},state,{clicknum:oldNum});
    }

    return state; // 返される値はテストデータです}

Reducer 関数では、 action.typeを使用してビジネス ロジックを判断し、処理します。

この時点で、なぜ Redux がまだ面倒なのかと疑問に思うかもしれません。はい、Redux は一般的に複雑なビジネス ロジックを持つプロジェクトで使用されます。

這里寫圖片描述

react.jsフレームワークにおけるReduxの基本的なケースの詳細な説明に関するこの記事はこれで終わりです。 react.jsフレームワークにおけるReduxの基本的な内容の詳細については、123WORDPRESS.COMの以前の記事を検索するか、以下の関連記事を引き続き参照してください。 今後とも123WORDPRESS.COMを応援してください。

以下もご興味があるかもしれません:
  • Javascript の基礎: 演算子とフロー制御の詳細な説明
  • JavaScriptの基本構文とデータ型の詳細な説明
  • JavaScript 基礎シリーズ: 関数とメソッド
  • JSP EL式の基礎を詳しく説明します
  • Java の基礎 - FastJson の詳細な説明
  • Javascriptの基本を詳しく説明

<<:  Windows DNS サーバーに「ワームレベル」の脆弱性が露呈、17 年間存在

>>:  Apache クロスドメイン リソース アクセス エラーの解決策

推薦する

Linux で scp コマンドを使用してファイルをリモートでコピーする方法の詳細な説明

序文scp は secure copy の略です。scp は、Linux システムの ssh ログイ...

MySQL <> および <=> 演算子の紹介

<> 演算子機能: 等しくないことを示します。注: 「!=」演算子と同じ機能を持ちますが...

Vueでミックスインを使用する方法

目次序文使い方要約する序文Vue にはコードの再利用に使われる mixins という設定項目がありま...

jsはブラウザを閉じるときにアカウントのログアウトを処理します

目次古典的なアプローチ質問その他の質問注意が必要な問題古典的なアプローチご存知のとおり、アカウントの...

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

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

MySQL8のパスワードを忘れた場合の簡単な解決策

序文MySQL データベースのパスワードを忘れると、データベースに正常にアクセスできなくなり、パスワ...

VMware 上の CentOS に Oracle12.2 をサイレント インストールする詳細なグラフィック チュートリアル

環境準備: VMware+CentOS、jdk 1. システムディスクのサイズを確認する1. コマン...

xtrabackup による MySQL データベースのバックアップと復元

mysqldump バックアップは、その独自の特性 (テーブルのロック、基本的に挿入スクリプトまたは...

Hadoop 3.2.0 クラスターの構築に関する一般的な考慮事項

1つのポートの変更バージョン 3.2.0 では、ネームノード ページ ポートは 9870、データノー...

MySQL 学習: データベース テーブルの 5 つの主要な制約を初心者向けに詳しく説明します

目次1. 制約の概念と分類2. 5つの制約の追加と削除2.1 制約を追加する6つの方法2.2 制約を...

nginx でディレクトリ ホワイトリストと IP ホワイトリストを設定する方法

1. ディレクトリホワイトリストを設定する:指定されたリクエストパスに制限を設定しないでください。た...

MySQL パスワードに特殊文字が含まれている場合とコマンドラインからログインする場合

サーバーでは、データベースにすばやくログインするために、通常は mysql -hhost -uuse...

フォーム送信ページの更新がジャンプしない

1. ソースコードの設計コードをコピーコードは次のとおりです。 <!DOCTYPE html ...

CentOS 6.5 に MySQL 5.6 をインストールするチュートリアル

1. Linuxに対応するRPMパッケージをダウンロードする5.6 より前のバージョンhttp://...

ラベルタグを使用してテキストをクリックしてラジオボタンを選択します

<label> タグは、入力要素のラベル (タグ) を定義します。ラベル要素はユーザーに...