あなたが反応を学んでいるとき、あなたはほとんど常に人々がreduxがどれほど素晴らしいか、そしてあなたがそれを試してみるべきだと言うのを聞くでしょう。 React Ecosystemは迅速なペースで成長しており、Flow、Redux、Middlewares、Mobxなど、Reactに接続できるライブラリが非常に多くあります。
Learning Reactは簡単ですが、Reactエコシステム全体に慣れるには時間がかかります。このチュートリアルは、Reactエコシステムの不可欠なコンポーネントの1つであるReduxの紹介です。
基本的な非レッドルックス用語
以下は、よく知られていないかもしれない一般的に使用される用語のいくつかを紹介しますが、それらはRedux自体に固有ではありません。このセクションをスキムして、何かが意味をなさない場合//場合にここに戻ってくることができます。
純粋な機能
純粋な関数は、それが満たさなければならない2つの追加の制約を備えた通常の関数にすぎません。
- 一連の入力が与えられた場合、関数は常に同じ出力を返す必要があります。
- 副作用は発生しません。
たとえば、ここに2つの数値の合計を返す純粋な関数があります。
/ *純粋な追加関数 */<br> const add =(x、y)=> {<br> xyを返します。<br> }<br><br> console.log(add(2,3))// 5<br><br>
純粋な関数は予測可能な出力を与え、決定論的です。関数は、戻り値を計算する以外に実行すると不純になります。
たとえば、以下のADD関数はグローバル状態を使用して出力を計算します。さらに、この関数はコンソールに値を記録します。コンソールは副作用と見なされます。
const y = 10;<br><br> const impureadd =(x)=> {<br> console.log( `入力は$ {x}および$ {y}`)です。<br> xyを返します。<br> }<br>
観察可能な副作用
「観察可能な副作用」は、外の世界との機能によって行われた相互作用の派手な用語です。関数が、関数の外側に存在する変数に値を書き込もうとする場合、または外部メソッドを呼び出そうとする場合、これらのことを安全に副作用と呼ぶことができます。
ただし、純粋な関数が別の純粋な関数を呼び出す場合、関数は純粋なものとして扱うことができます。一般的な副作用のいくつかは次のとおりです。
- API呼び出しを行います
- コンソールまたは印刷データへのロギング
- 変異データ
- DOM操作
- 現在の時間を取得します
コンテナとプレゼンテーションコンポーネント
コンポーネントアーキテクチャを2つに分割することは、Reactアプリケーションを使用する際に役立ちます。それらを大幅に分類し、コンテナコンポーネントとプレゼンテーションコンポーネントの2つのカテゴリに分類できます。また、一般的にスマートコンポーネントとダムコンポーネントとして知られています。
コンテナコンポーネントは、物事の仕組みに関係していますが、プレゼンテーションコンポーネントは物事の見た目に関係しています。概念をよりよく理解するために、私はそれを別のチュートリアルで説明しました:コンテナとReactのプレゼンテーションコンポーネント。
可変性と不変のオブジェクト
可変オブジェクトは、次のように定義できます。
可変オブジェクトは、作成後に状態を変更できるオブジェクトです。
不変性は正反対です。不変のオブジェクトは、作成後に状態を変更できないオブジェクトです。 JavaScriptでは、文字列と数字は不可能ですが、オブジェクトと配列は不可能です。この例は、違いをよりよく示しています。
/ *文字列と数字は不変です */<br><br> a = 10としましょう。<br><br> b = aとします。<br><br> b = 3;<br><br> console.log( `a = $ {a}およびb = $ {b}`); // a = 10およびb = 3<br><br> / *しかし、オブジェクトと配列は */<br><br> / *オブジェクトから始めましょう */<br><br> let user = {<br> 名前:「ボブ」、<br> 年齢:22、<br> ジョブ:「なし」<br> }<br><br> active_user = user;<br><br> Active_user.name = "tim";<br><br> //両方のオブジェクトに同じ値があります<br>console.log(active_user); // {"name": "tim"、 "age":22、 "job": "none"}<br><br> console.log(user); // {"name": "tim"、 "age":22、 "job": "none"}<br><br> / *今すぐ配列のために */<br><br> let usersid = [1,2,3,4,5]<br><br> let usersiddup = usersid;<br><br> usersiddup.pop();<br><br> console.log(usersiddup); // [1,2,3,4]<br> console.log(usersid); // [1,2,3,4]<br>
オブジェクトを不変にするには、store.getState()を使用して、アプリケーションの現在の状態ツリーにアクセスします。
店を作りましょう。 Reduxには、新しいストアを作成するconfigureStore
メソッドがあります。それが何であるかはわかりませんが、それを還元剤に渡す必要があります。したがって、Reducerという関数を作成するだけです。オプションで、ストアの初期状態を設定する2番目の引数を指定できます。
src/index.js
「redux」から{configureStore}をインポートします。<br> //これは還元剤です<br>const reducer =()=> {<br> / *何かがここに行く */<br> }<br><br> // initialStateはオプションです。<br> //このデモでは、カウンターを使用していますが、通常はオブジェクトです<br>const InitialState = 0<br> const store = configureStore(reducer、initialstate);<br>
次に、ストアの変更を聴き、その後、ストアの現在の状態をconsole.log()
聴きます。
store.subscribe(()=> {<br> console.log( "Stateが変更された" store.getState());<br> })<br>
では、どのようにストアを更新しますか? Reduxには、これを実現するアクションと呼ばれるものがあります。
アクション/アクションクリエイター
アクションは、アプリケーションから情報をストアに送信する単純なJavaScriptオブジェクトでもあります。インクリメントボタンを備えた非常にシンプルなカウンターがある場合、それを押すと、次のようなアクションがトリガーされます。
{<br> タイプ:「増分」、<br> ペイロード:1<br> }<br>
彼らは店の唯一の情報源です。店舗の状態は、アクションに応じてのみ変更されます。各アクションには、アクションオブジェクトが意図していることを説明するタイププロパティが必要です。それ以外は、アクションの構造は完全にあなた次第です。ただし、アクションは、アプリケーション状態を変換するために必要な最小の情報を表すため、アクションを小さく保ちます。
たとえば、上記の例では、タイププロパティは「増分」に設定されており、追加のペイロードプロパティが含まれています。ペイロードプロパティの名前をより意味のあるものに変更したり、私たちの場合は完全に省略したりすることができます。このようにアクションを店に派遣することができます。
store.dispatch({type: "increment"、ペイロード:1});<br>
Reduxのコーディング中、通常はアクションを直接使用することはありません。代わりに、アクションを返す関数を呼び出します。これらの関数は、アクションクリエイターとして一般的に知られています。以前に説明した増分アクションのアクション作成者は次のとおりです。
const incrementCount =(count)=> {<br> 戻る {<br> タイプ:「増分」、<br> ペイロード:カウント<br> }<br> }<br>
したがって、カウンターの状態を更新するには、次のようなincrementCount
アクションを派遣する必要があります。
store.dispatch(incrementCount(1));<br> store.dispatch(incrementCount(1));<br> store.dispatch(incrementCount(1));<br>
ブラウザコンソールに向かうと、部分的に機能していることがわかります。レデューサーをまだ定義していないため、未定義になります。

だから今、私たちは行動と店をカバーしています。ただし、アクションによって提供される情報を変換し、ストアの状態を変換するメカニズムが必要です。還元剤はこの目的に役立ちます。
還元剤
アクションは問題を説明し、レデューサーは問題を解決する責任があります。以前の例では、 incrementCount
メソッドは、州に行ったかった変更の種類に関する情報を提供するアクションを返しました。還元剤は、この情報を使用して実際に状態を更新します。ドキュメントには、Reduxを使用している間は常に覚えておくべき大きなポイントがあります。
同じ引数を考えると、還元剤は次の状態を計算して返す必要があります。驚きはありません。副作用はありません。 API呼び出しはありません。突然変異はありません。単なる計算。
これが意味することは、還元剤が純粋な機能でなければならないということです。入力のセットが与えられた場合、常に同じ出力を返す必要があります。それを超えて、それ以上は何もするべきではありません。また、還元剤は、Ajax呼び出しを行い、APIからデータを取得するなど、副作用の場所ではありません。
カウンターのレデューサーを埋めましょう。
//これは還元剤です<br><br>const reducer =(state = initialState、action)=> {<br> switch(action.type){<br> ケース「増分」:<br> 状態action.payloadを返します<br> デフォルト:<br> 返品状態<br> }<br> }<br>
還元剤は、状態とアクションの2つの引数を受け入れ、新しい状態を返します。
(前state、アクション)=> newState<br>
状態は、州の値が未定義である場合にのみ使用されるデフォルト値であるinitialState
を受け入れます。それ以外の場合、状態の実際の値が保持されます。スイッチステートメントを使用して、正しいアクションを選択します。ブラウザを更新すると、すべてが期待どおりに機能します。
DECREMENT
のケースを追加しましょう。それなしではカウンターが不完全です。
//これは還元剤です<br><br>const reducer =(state = initialState、action)=> {<br> switch(action.type){<br> ケース「増分」:<br> 状態action.payloadを返します<br> ケース「DECREMENT」:<br> Return State -Action.PayLoad<br> デフォルト:<br> 返品状態<br> }<br> }<br>
これがアクションクリエーターです。
const decromentCount =(count)=> {<br> 戻る {<br> タイプ:「DECREMENT」、<br> ペイロード:カウント<br> }<br> }<br>
最後に、それを店に派遣します。
store.dispatch(incrementCount(4)); // 4<br> store.dispatch(decrementCount(2)); // 2<br>
それでおしまい!
まとめ
このチュートリアルは、Reduxを使用して状態を管理するための出発点となることを意図していました。ストア、アクション、リデューサーなどの基本的なReduxの概念を理解するために必要なすべてのものをカバーしました。チュートリアルの終わりに向かって、作業Reduxデモカウンターも作成しました。それほどではありませんでしたが、パズルのすべてのピースがどのように合うかを学びました。
過去数年にわたって、Reactは人気が高まっています。実際、市場には、購入、レビュー、実装などが可能な多くのアイテムがあります。 Reactの周りに追加のリソースを探している場合は、遠慮なくチェックアウトしてください。
次のチュートリアルでは、Reduxを使用してReactアプリケーションを作成するためにここで学んだことを利用します。それまでお楽しみに。コメントであなたの考えを共有してください。
以上がReduxを始めましょう:なぜReduxなのか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

JavaScriptは、Webページのインタラクティブ性とダイナミズムを向上させるため、現代のWebサイトの中心にあります。 1)ページを更新せずにコンテンツを変更できます。2)Domapiを介してWebページを操作する、3)アニメーションやドラッグアンドドロップなどの複雑なインタラクティブ効果、4)ユーザーエクスペリエンスを改善するためのパフォーマンスとベストプラクティスを最適化します。

CおよびJavaScriptは、WebAssemblyを介して相互運用性を実現します。 1)CコードはWebAssemblyモジュールにコンパイルされ、JavaScript環境に導入され、コンピューティングパワーが強化されます。 2)ゲーム開発では、Cは物理エンジンとグラフィックスレンダリングを処理し、JavaScriptはゲームロジックとユーザーインターフェイスを担当します。

JavaScriptは、Webサイト、モバイルアプリケーション、デスクトップアプリケーション、サーバー側のプログラミングで広く使用されています。 1)Webサイト開発では、JavaScriptはHTMLおよびCSSと一緒にDOMを運用して、JQueryやReactなどのフレームワークをサポートします。 2)ReactNativeおよびIonicを通じて、JavaScriptはクロスプラットフォームモバイルアプリケーションを開発するために使用されます。 3)電子フレームワークにより、JavaScriptはデスクトップアプリケーションを構築できます。 4)node.jsを使用すると、JavaScriptがサーバー側で実行され、高い並行リクエストをサポートします。

Pythonはデータサイエンスと自動化により適していますが、JavaScriptはフロントエンドとフルスタックの開発により適しています。 1. Pythonは、データ処理とモデリングのためにNumpyやPandasなどのライブラリを使用して、データサイエンスと機械学習でうまく機能します。 2。Pythonは、自動化とスクリプトにおいて簡潔で効率的です。 3. JavaScriptはフロントエンド開発に不可欠であり、動的なWebページと単一ページアプリケーションの構築に使用されます。 4. JavaScriptは、node.jsを通じてバックエンド開発において役割を果たし、フルスタック開発をサポートします。

CとCは、主に通訳者とJITコンパイラを実装するために使用されるJavaScriptエンジンで重要な役割を果たします。 1)cは、JavaScriptソースコードを解析し、抽象的な構文ツリーを生成するために使用されます。 2)Cは、Bytecodeの生成と実行を担当します。 3)Cは、JITコンパイラを実装し、実行時にホットスポットコードを最適化およびコンパイルし、JavaScriptの実行効率を大幅に改善します。

現実世界でのJavaScriptのアプリケーションには、フロントエンドとバックエンドの開発が含まれます。 1)DOM操作とイベント処理を含むTODOリストアプリケーションを構築して、フロントエンドアプリケーションを表示します。 2)node.jsを介してRestfulapiを構築し、バックエンドアプリケーションをデモンストレーションします。

Web開発におけるJavaScriptの主な用途には、クライアントの相互作用、フォーム検証、非同期通信が含まれます。 1)DOM操作による動的なコンテンツの更新とユーザーインタラクション。 2)ユーザーエクスペリエンスを改善するためにデータを提出する前に、クライアントの検証が実行されます。 3)サーバーとのリフレッシュレス通信は、AJAXテクノロジーを通じて達成されます。

JavaScriptエンジンが内部的にどのように機能するかを理解することは、開発者にとってより効率的なコードの作成とパフォーマンスのボトルネックと最適化戦略の理解に役立つためです。 1)エンジンのワークフローには、3つの段階が含まれます。解析、コンパイル、実行。 2)実行プロセス中、エンジンはインラインキャッシュや非表示クラスなどの動的最適化を実行します。 3)ベストプラクティスには、グローバル変数の避け、ループの最適化、constとletsの使用、閉鎖の過度の使用の回避が含まれます。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

ドリームウィーバー CS6
ビジュアル Web 開発ツール

WebStorm Mac版
便利なJavaScript開発ツール

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。
