reduxの動作原理と使い方の説明

reduxの動作原理と使い方の説明

1. redux とは何ですか?

React は単なる DOM の抽象化レイヤーであり、Web アプリケーションの完全なソリューションではありません。 React は単なる軽量のビュー レイヤー フレームワークです。大規模なアプリケーションを構築する場合は、ビュー レイヤー フレームワーク Redux と一緒に使用する必要があります。これは主に、複数のインタラクションと複数のデータ ソースがあるシナリオで使用されます。使用する必要はありませんが、使用方法を知っておく必要があります。

2. 還元の原則

まず、Reduxの原理を分かりやすい図で説明します。

まず、ユーザーがアクションを発行します。

store.dispatch(アクション);

次に、Store は自動的に Reducer を呼び出し、現在の State と受信した Action の 2 つのパラメータを渡します。 Reducer は新しい状態を返します。

次の状態を todoApp(前の状態、アクション) とします。

状態が変化すると、Store はリスニング関数を呼び出します。

//リスニング関数を設定します store.subscribe(listener);

リスナーは store.getState() を通じて現在の状態を取得できます。 React を使用している場合、これによりビューの再レンダリングがトリガーされる可能性があります。

関数リスナー() {
  newState を store.getState() に格納します。
  コンポーネントを新しい状態に設定します。   
}

3. redux の使い方は?

(1)reduxをインストールし、reduxフォルダを作成し、store.jsを作成する

このファイルは、ストア オブジェクトを公開するために特に使用されます。アプリケーション全体には、ストア オブジェクトが 1 つだけあります。

redux をインストール: yarn add redux / npm install redux

//createStore を導入します。これは、redux でコア ストア オブジェクトを作成するために特に使用されます。import {createStore, applyMiddleware} from 'redux'
//Countコンポーネントを提供するリデューサーを導入する
'./count_reducer' から countReducer をインポートします。
//非同期アクションをサポートするためにredux-thunkを導入する
'redux-thunk' から thunk をインポートします
//ストアを公開する  
//applyMiddlewareはthunkを使用した中間位置です
デフォルトのcreateStoreをエクスポートします(countReducer、applyMiddleware(thunk))

(2)reducers.jsを作成する

  • 1. このファイルはCountコンポーネントを提供するリデューサーを作成するために使用されます。リデューサーの本質は関数です。
  • 2. リデューサー関数は、前の状態(preState)とアクションオブジェクト(action)の2つのパラメータを受け取ります。
const initState = 0 //初期化状態エクスポートデフォルト関数countReducer(preState=initState,action){
	// コンソールログ(preState);
	//アクションオブジェクトから取得: タイプ、データ
	const {type,data} = アクション
	//型に基づいてデータの処理方法を決定する switch (type) {
		case 'increment': // 追加する場合は、preState + data を返す
		case 'decrement': //減少の場合はpreState - dataを返す
		デフォルト:
			preState を返す
	}
}

(3)store.subscribeを導入する

主にサブスクライブを使用してストア内の各変更を監視します

// パブリックindex.js
'./redux/store' からストアをインポートします。

//subscribeはストア内のデータが変更されたときにデータを更新します。ここに記述すると、グローバルstore.subscribe(()=>{
	ReactDOM.render(<App/>,document.getElementById('root'))
})

(4) react-reduxの紹介

react-redux は、redux の作者によってカプセル化されたライブラリです。これは、Redux をさらに簡素化し、いくつかの追加 API (Provider、connect など) を提供するサードパーティ モジュールです。これを使用すると、コードをより適切に整理および管理でき、React で Redux をより便利に使用できるようになります。

react-reduxをダウンロード

カウントファイルを作成する

//Count UI コンポーネントをインポートします import CountUI from '../../components/Count'

//UIコンポーネントとreduxを接続するためのconnectを導入する
'react-redux' から {connect} をインポートします

-----------------------------------------------------------
/* 
	1. mapStateToProps 関数はオブジェクトを返します。
	2. 返されたオブジェクトのキーはUIコンポーネントのpropsに渡されるキーとして使用され、値はUIコンポーネントのpropsに渡される値として使用されます。
	3.mapStateToPropsは状態を渡すために使用されます*/
関数 mapStateToProps(状態){
	{count:state} を返す
}
-----------------------------------------------------------------
/* 
	1. mapDispatchToProps 関数はオブジェクトを返します。
	2. 返されたオブジェクトのキーはUIコンポーネントのpropsに渡されるキーとして使用され、値はUIコンポーネントのpropsに渡される値として使用されます。
	3.mapDispatchToPropsは操作ステータスメソッドを渡すために使用されます*/
関数 mapDispatchToProps(dispatch){
	戻る {
		jia:number => ディスパッチ(createIncrementAction(number))、
		jian:number => ディスパッチ(createDecrementAction(number))、
		jiaAsync:(数値、時間) => ディスパッチ(createIncrementAsyncAction(数値、時間))、
	}
}
// connect()() を使用して Count コンテナ コンポーネントを作成して公開します export default connect(mapStateToProps,mapDispatchToProps)(CountUI)
//エクスポートのデフォルト接続の改善(
	状態 => ({count:state}),
	
	//mapDispatchToPropsの一般的な記述 /* dispatch => ({
		jia:number => ディスパッチ(createIncrementAction(number))、
		jian:number => ディスパッチ(createDecrementAction(number))、
		jiaAsync:(数値、時間) => ディスパッチ(createIncrementAsyncAction(数値、時間))、
	}) */

	//mapDispatchToProps の省略形 {
		jia:createIncrementAction、
		jian:createDecrementAction、
		jiaAsync:createIncrementAsyncAction、
	}
)(カウント)


アクションオブジェクトを生成し、個別に公開する

/* 
	このファイルは、Count コンポーネントのアクション オブジェクトを生成するために特に使用されます*/
'../constant' から {INCREMENT,DECREMENT} をインポートします

//同期アクションとは、アクションの値が Object 型の一般的なオブジェクトであることを意味します。export const increment = data => ({type:INCREMENT,data})
エクスポート const decrement = data => ({type:DECREMENT,data})

// 非同期アクションとは、アクションの値が関数であることを意味します。非同期アクションは通常、同期アクションを呼び出しますが、非同期アクションは必須ではありません。
エクスポート const incrementAsync = (データ、時間) => {
	戻り値 (ディスパッチ) =>{
		タイムアウトを設定します(()=>{
			ディスパッチ(増分(データ))
		}、時間)
	}
}

これで、redux の動作原理と使用法に関するこの記事は終了です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援して頂ければ幸いです。

以下もご興味があるかもしれません:
  • react-redux における connect の使い方と原理分析の詳細な説明
  • JavaScript 状態コンテナ Redux の詳細な説明
  • 1 つの記事で React における Redux の初期の使用を理解する

<<:  フォーム要素の簡単な実装コードでは登録を例に挙げています

>>:  SQL IDENTITY_INSERT ケーススタディ

推薦する

Vueのイベント処理とイベント修飾子の詳細な説明

<div id="ルート"> <h2>頑張れ、{{na...

MySQLとOracleの誤解の詳細な説明

目次本質的な違いデータベースセキュリティ権限スキーマの移行パターンオブジェクトの類似性スキーマオブジ...

Selenium+testng を使用して Docker で Web 自動化を実現する方法

序文長い間さまざまな資料を読んで、ついに selenium+testng のパラメータ化の問題を解決...

JS オブジェクトのコピー (ディープ コピーとシャロー コピー)

目次1. 浅いコピー1. Object.assign(ターゲット、ソース、ソース...) 2. スプ...

Linux ファイル操作でよく使われるコマンドのまとめ

0. 新しい操作: mkdir abc #新しいフォルダを作成 touch abc.sh #新しいフ...

Vue2.0は適応解像度を実装する

この記事では、適応解像度を実現するためのVue2.0の具体的なコードを参考までに紹介します。具体的な...

Dockerで新しいイメージを手動で構築する方法

この記事では、Docker で新しいイメージを手動で構築する方法を紹介し、皆さんと共有します。詳細は...

CSS変換ページめくりアニメーションレコードの実装

ページめくりの問題のシナリオBとCは同じページ(表と裏)にありますページをめくって A をカバーした...

ユーザーのニーズがマーケティング指向のデザインにつながる

<br />それぞれのトピックについて、チーム内でメールで議論します。議論が白熱するにつ...

一般的なSQL削除ステートメントの原則の違いを理解するだけです

この記事では主に、SQL 削除ステートメント DROP、TRUNCATE、および DELETE の違...

トークンの有効期限が切れたときにページを更新するときに繰り返しプロンプトが表示されないようにする Vue について

トークンの有効期限が切れたら、ページを更新します。ページの読み込み時にバックエンドに複数のリクエスト...

Node.jsはブレークポイント再開を実装する

目次ソリューション分析スライス履歴書のダウンロード具体的な解決プロセス論理的分析フロントエンドサーバ...

Nexus サーバーを設定するための詳細な手順

1. ネクサスサービス構築の意義イントラネットの統合プロキシとして、チームで共同開発する場合、全員が...

VUE レンダリング機能の使い方と詳細な説明

目次序文レンダリングの役割レンダリング機能の説明レンダリングとテンプレートの違いレンダリング例要約す...

Dockerはコンテナポートバインディングのローカルポートを実装します

今日、イメージを起動した後、HTTP リクエスト経由でアクセスできないという小さな問題が発生しました...