グローバル状態管理Redux
Reduxの使い方を理解する前に、なぜReduxを使うのかを理解してください.
データバインドとは、ビュー(画面)をモデル(データ)に関連付けることです.
バニラJSはデータをバインドできますか?簡単なカウンタを実装しましょう.
画面に適用するには、個別のupdate関数が必要です.
これらのJavaScriptにはデータがバインドされていません.
反応はどうなりますか?
データはスクリーンにバインドされます.
データバインドはまったく同じではありません.
Reactのデータバインドは一方向です.ストリームはデータからビューにのみ適用されます.
これは、データを入力値に変更し、変更したデータをビューに表示する理由です.
vueやangleなどのフレームワークは双方向バインドをサポートします.
ビューで変更を行うと、データも変更されます.
MVCモードは昔からよく使われています.
コントローラが処理する「アクション」(Action)は、変更したモデルをViewに送信します.
ただし、1つのモデルは複数のデータで使用されるか、1つのビューで複数のモデルが使用されます.
開発規模が大きいほど、発生する状況が多くなります.
接続モデルとビューの複雑さが増大し、結果を予測するために複雑なデータストリームを作成することも困難になります.
FluxモードはFacebookで紹介されているアーキテクチャです.
MVCモードではなく開発時間が長く、より大きく、メンテナンスが容易であるという新しいモデルを提案した.
Fluxモードは、一方向データストリームを中心としています.
ユーザがアクションを発行すると、アクションに影響を与えるすべてのビューがリフレッシュされます.
そのため、何が起こるか予想できます.(複雑にならない)
この2つのパターンに対する経験が少ないため,それらの違いと利点を理解することは困難である.
これは一方向であり、モデルが変更されると、モデルを使用するビューが更新されることが重要です.
冗長性はFluxモードベースのライブラリです.
冗長性は、ステータスを管理するためのライブラリです.
以上のように、Vanilla JSにはバインドデータがありません.
reduceが有効になっている場合は、手動で更新する必要はありません.
変更を購読して、すべてのビューを変更できます.
どのアプリケーションでもグローバルに使用するデータが必要です.
Reactは簡単なUIライブラリであるため、データ管理は考慮されません.
1つのデータは複数の構成部品から取得する必要があります.
サブアセンブリ内の遠い構成部品にデータを渡すには、propsを介してデータを複数回転送する必要があります.
冗長性により、図に示すように、グローバルで使用されるデータを効率的に管理できます.
reduceを使用する前にreactのstateを複数の場所で使用する場合はpropsを移動する必要があります.
多くのコードが表示されます.
Store:ステータス管理コンテナ(リポジトリ). 動作:状態変化を引き起こす動作情報.Pure Object. Dispatcher:Actionステータスが更新されます. ビュー:ステータス変更が画面に反映されます. n/a.原則
アプリケーションにはstoreが必要です.
つまり、すべてのステータス値を1つのオブジェクトとして表す必要があります.
state値は読み取りにのみ使用されます.
Reactのstateのように直接値を変更することはできません.
ビューでは、ストリームに基づいてstateを変更して、必要なステータスを反映する必要があります.
stateは純関数でのみ変更できます.
純関数とは、同じ入力時に常に同じ出力を返す関数です.
この状態を変更する関数はreduceと呼ばれ、reduceだけが状態を変更する必要があります.(読み取り専用)
Data Binding
データバインドとは、ビュー(画面)をモデル(データ)に関連付けることです.
バニラJSはデータをバインドできますか?簡単なカウンタを実装しましょう.
const counter = document.querySelector('#counter'); // view
const plus = document.querySelector('#plus');
const minus = document.querySelector('#minus');
let count = 0;
const increase = () => {
count++;
}
const decrease = () => {
count--;
}
plus.addEventListener('click', increase);
minus.addEventListener('click', decrease);
データcount
はボタンのクリックによって変化しますが、これは画面に影響を与えることなくデータを変更するだけです.画面に適用するには、個別のupdate関数が必要です.
これらのJavaScriptにはデータがバインドされていません.
反応はどうなりますか?
function Component(props) {
const [count, setCount] = setState(0);
return (
<div>{count}</div>
)
}
ステータスを変更すると、変更されたJSXが表示されます.データはスクリーンにバインドされます.
一方向
データバインドはまったく同じではありません.
Reactのデータバインドは一方向です.ストリームはデータからビューにのみ適用されます.
const [input,setInput] = useState('');
return (
<input value={input} onChange={e => setInput(e.target.value)}/>
)
Inputに書き込むと、入力に伴ってデータは変更されません.これは、データを入力値に変更し、変更したデータをビューに表示する理由です.
vueやangleなどのフレームワークは双方向バインドをサポートします.
ビューで変更を行うと、データも変更されます.
Fluxモード
MVCモードは昔からよく使われています.
コントローラが処理する「アクション」(Action)は、変更したモデルをViewに送信します.
ただし、1つのモデルは複数のデータで使用されるか、1つのビューで複数のモデルが使用されます.
開発規模が大きいほど、発生する状況が多くなります.
接続モデルとビューの複雑さが増大し、結果を予測するために複雑なデータストリームを作成することも困難になります.
FluxモードはFacebookで紹介されているアーキテクチャです.
MVCモードではなく開発時間が長く、より大きく、メンテナンスが容易であるという新しいモデルを提案した.
Fluxモードは、一方向データストリームを中心としています.
ユーザがアクションを発行すると、アクションに影響を与えるすべてのビューがリフレッシュされます.
そのため、何が起こるか予想できます.(複雑にならない)
この2つのパターンに対する経験が少ないため,それらの違いと利点を理解することは困難である.
これは一方向であり、モデルが変更されると、モデルを使用するビューが更新されることが重要です.
冗長性はFluxモードベースのライブラリです.
Redux
なぜRidexを使うのですか?
冗長性は、ステータスを管理するためのライブラリです.
以上のように、Vanilla JSにはバインドデータがありません.
reduceが有効になっている場合は、手動で更新する必要はありません.
変更を購読して、すべてのビューを変更できます.
どのアプリケーションでもグローバルに使用するデータが必要です.
Reactは簡単なUIライブラリであるため、データ管理は考慮されません.
1つのデータは複数の構成部品から取得する必要があります.
サブアセンブリ内の遠い構成部品にデータを渡すには、propsを介してデータを複数回転送する必要があります.
冗長性により、図に示すように、グローバルで使用されるデータを効率的に管理できます.
reduceを使用する前にreactのstateを複数の場所で使用する場合はpropsを移動する必要があります.
多くのコードが表示されます.
Redux Intro
アプリケーションにはstoreが必要です.
つまり、すべてのステータス値を1つのオブジェクトとして表す必要があります.
state値は読み取りにのみ使用されます.
Reactのstateのように直接値を変更することはできません.
ビューでは、ストリームに基づいてstateを変更して、必要なステータスを反映する必要があります.
stateは純関数でのみ変更できます.
純関数とは、同じ入力時に常に同じ出力を返す関数です.
この状態を変更する関数はreduceと呼ばれ、reduceだけが状態を変更する必要があります.(読み取り専用)
Reference
この問題について(グローバル状態管理Redux), 我々は、より多くの情報をここで見つけました https://velog.io/@hanganda23/Reduxテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol