ReactとReduxの関係を詳しく説明

ReactとReduxの関係を詳しく説明

ドキュメント: Redux 中国語ドキュメント

公式の Redux ドキュメントでは、Redux を「予測可能な JavaScript アプリケーション状態管理コンテナー」と定義しています。

1. reduxとreactの関係

Redux は、React アプリケーションの状態管理を提供するだけでなく、他のフレームワークもサポートします。

React は DOM (UI ライブラリ) の抽象化レイヤーであり、Web アプリケーションの完全なソリューションではありません。したがって、データ処理やコンポーネント間の通信に関しては、React の方が複雑になります。

大規模で複雑なアプリケーションの場合、これら 2 つの側面が最も重要になります。そのため、React のみを使用して大規模なアプリケーションを作成することは困難です。

redux の利点:

アプリケーションのステータスを一元的に保存および管理する

コンポーネント通信の問題に対処するときは、コンポーネント間の階層関係を無視する

大規模で複雑なアプリケーションにおけるコンポーネント間の通信を簡素化

データフローが明確でバグを見つけやすい

2. Reactのマルチコンポーネント共有

すべてのコンポーネントの状態を抽出し、React コンポーネント ツリーに倣って集中型の状態ツリーを構築します。この状態ツリーは React コンポーネント ツリーと 1 対 1 で対応しており、React コンポーネント ツリーのステートフル モデリングに相当します。

├── 出典
   ├── store # reduxディレクトリ、一般的にはstoreと呼ばれる
   │ ├── index.js # ストアを定義してエクスポートします。リデューサーはインポートされます
   │ └── Reducer # リデューサー関数 ├── App.js # ルートコンポーネント、Father および Uncle コンポーネントをインポート

1. Reduxはコンポーネント階層を無視できる

2. コンポーネントシステムでは、reduxはサードパーティのグローバル「変数」です。

3. reduxの3つのコアコンセプト

コアコンセプト: storeactionreducer

1. 保存する

ストアは、アクションとリデューサーを統合した、Reduxのコアとなる倉庫であり、vuexのストアに似ています。

特徴:

  • アプリケーションにはストアが1つだけあります
  • アプリケーションの状態を維持し、状態を取得します: store.getState re.getState()
  • ストアを作成するときは、リデューサーをパラメータとして受け取ります: const st store = createStore(reducer)
  • ステータス更新を開始するときは、 action:store.dispatch(action)
'redux' から {createStore} をインポートします。
// ストアを作成する
const ストア = createStore(リデューサー)

2. アクション

actionは、次の 2 つのプロパティを持つ js オブジェクトです。

type : 属性を識別し、その値は文字列です。複数のタイプはアクションによって区切られます

payload : データ属性、オプション。このアクションによって運ばれるデータを示します

特徴:

  • 何をすべきか説明してください
  • JS オブジェクト。アクションの種類を区別するために type 属性が必要です。
  • 機能に応じて、対応する機能を完了するために追加のデータを伝送できます。
const action1 = { タイプ: 'addN'、 ペイロード: 12 }
//ストア.ディスパッチ(アクション1)
 
const action2 = { タイプ: 'add'、 ペイロード: 1 }

3. リデューサー(純粋関数)

効果:

1. 初期化状態

2. ステータスを変更する

状態の変更: 渡された古い状態とアクションに基づいて新しい状態を返します。

初期状態 = 0
関数リデューサー(状態 = initState, アクション) {
  状態を返す
}

要約する

この記事はこれで終わりです。皆さんのお役に立てれば幸いです。また、123WORDPRESS.COM のその他のコンテンツにも注目していただければ幸いです。

以下もご興味があるかもしれません:
  • ReactとReduxの配列処理の説明
  • 1 つの記事で React における Redux の初期の使用を理解する
  • react-reduxプラグインの詳細な紹介
  • React Redux 入門例
  • ReactとReduxの関係についての簡単な説明 react-redux

<<:  MySQLの外部結合と内部結合クエリの違い

>>:  コンテンツタイプの説明、つまりHTTPリクエストヘッダーのタイプ

推薦する

MySQL FAQ シリーズ: ibdata1 ファイルのサイズが突然増加しないようにする方法

0. はじめにibdata1 ファイルとは何ですか? ibdata1 は、innodb システム テ...

Docker デプロイメントサービスの落とし穴を登る過程の詳細

初めて書きます。自己紹介させてください...みなさんこんにちは。私はジャスミンです。なぜジャスミンと...

シェルで文字列内のスペースや指定された文字を削除する方法

インターネット上には、正しい方法であっても、使用しても正しい結果が得られない方法が数多くあります。正...

MySQL インデックスのクイックガイド

MySQL インデックスの確立は、MySQL の効率的な操作にとって非常に重要です。インデックスによ...

MySQL の完全なデータベース バックアップ データを使用して単一のテーブル データを復元する方法

序文データベースをバックアップするときは、データベース全体のバックアップを使用します。ただし、何らか...

<td></td> タグの境界線スタイルがブラウザに表示されない問題の解決方法

質問: 360ブラウザの互換モードなど、一部のブラウザでは、 <td style="...

Ubuntu 18.04 (コミュニティ エディション) に Docker CE をインストールする方法

古いバージョンをアンインストールする以前に古いバージョンをインストールしたことがある場合は、まずそれ...

jsプロキシの原理の詳細な説明

目次プロキシモードとは何ですか?実例を紹介例を使ってプロキシモデルの定義を理解するプロキシとはget...

CSSの複数条件の書き方の詳細説明:

:not疑似クラスセレクターは、式に一致しない要素をフィルタリングできます。例 テーブル tbod...

Centos7 MySQL データベースのインストールと設定のチュートリアル

1. システム環境yum updateアップグレード後のシステムバージョンは[root@yl-web...

MySQLデータベースのストアドプロシージャとトランザクションの違い

トランザクションは、複数の SQL ステートメントの原子性、つまり、それらが一緒に完了するか、一緒に...

Vueプラグインの実装で発生した問題の概要

目次シーン紹介プラグインの実装問題1: 重複したヘッダーコンポーネント質問2: 別の実装アイデア質問...

MySQLトランザクションとSpring分離レベルの実装原理の詳細な説明

1. トランザクションはACID特性を持つ原子性: トランザクションは、トランザクションによって分割...

MySQL パフォーマンス最適化のヒント

MySQL パフォーマンスの最適化MySQL はインターネット企業で広く使用されており、MySQL ...

JavaScript関数の使い方の詳細な説明

目次1. 関数を宣言する2. 関数の呼び出し3. 関数パラメータ4. 関数の戻り値5. 議論の使用6...