[Redux]Reduxベース-Reduxを使用した構造について
1. Redux
データ・ストリームを一方向化して、分散した構造とストリームをクリーンアップします.
コードのメンテナンスと整合性を向上させるツール.
react名と似ていて、混同される可能性がありますが、reactとは全く違います.
2.JavaScriptでのデータストリーム
Reduxを使用する前に、Javascriptコードのデータストリームを最初に表示します.
//Vanilla
const add = document.getElementById("add")
const minus = document.getElementById("minus")
const number = document.querySelector("span")
let count = 0
number.innerText = count
const updateCount = () => {
number.innerText = count
}
const handleAdd = () => {
count = count + 1
updateCount()
}
const handleMinus = () => {
count = count - 1
updateCount()
}
add.addEventListener("click", handleAdd)
minus.addEventListener("click", handleMinus )
各ボタンタグは、このコードでは,変化を表すデータ値countストリームを以下に示す.
3-1. Reduxが使用する基本概念
きおくくうかん
3-2. Storeとreduceの基本構造
きおくこうぞう
//Vanilla
import { createStore } from "redux"
const add = document.getElementById("add")
const minus = document.getElementById("minus")
const number = document.querySelector("span")
const reducer = () => {
return
}
const countStore = createStore(reducer)
console.log(countStore)
上記のコードに示すように、リポジトリを作成し、reduce関数に接続します.reduce関数内部のデータ値は、状態を反映したり、変更したりすることができます.
チェックストアをlog出力することで4つの関数が得られる.
上記コードでStoreをログに記録した結果は以下の通りです.
この4つの関数を用いて,1つの機能プログラミングにより複雑な状態管理を実現できる.
getStateでは、アプリケーションステータス管理に反映するデータ値をすぐに宣言できます.
const reducer = () => {
return "HELLO"
}
const countStore = createStore(reducer)
console.log(countStore.getState)
特に、reduce関数の戻り値に戻りたい文字列を表示し、getState関数を使用してログをチェックします.アプリケーションのデータ値として反映されるreduce関数の戻り値を受け入れることができます.
ステータスをReducerで更新します.
これをcreateStoreに戻して、データの変化とステータス管理を実現できます.
import {createStore} from 'reducer'
const reducer = (state) => {
modify state
return state.value
}
createStore(store.getState)
上記の構造を使用してデータを変更してステータスを反映し、getStateを介して反映されたステータス値を渡すと、ステータスが反映されたデータ値、すなわち変化したデータ値を直ちに利用することができる.※const reduceという関数はユーザー自身が定義しなければならないが、createStoreがステータス値を受け入れるためには、論理の構築に注意しなければならない.
4. action
reduce外部とのコミュニケーションのために作成されたreduce関数の2番目のパラメータ
const reducer = (state = initial_value, action) => {
return state
}
整理後、宣言されたreduce関数で4-1. 2番目のパラメータとしてreduceに伝達される関数も、reduceとのコミュニケーションの経路である。
reduce関数は、状態と動作を伝達します.
const reudcer = (state = initial_value, action)
デフォルトでは、createStoreには4つの関数があります.ここでdispatch関数を使用すると、対応する動作をreduceに渡すことができます.
上の図に示すように、createStore自体には4つの関数があります.
const reducer = (state = 0, action) => {
console.log(action)
return state
}
const countStore = createStore(reducer)
countStore.dispatch({dispatced_action : "HELLO"})
上の論理フローを見てみましょう※dispatchで渡されるオブジェクト値自体がactionデフォルトであり、このactionが渡されるとreduceが呼び出されることに注意してください.
すなわち、reduceを外部から呼び出して内部の値を変更することができる.
※基本的にはcreateStoreでreduceとstoreを接続しているので、可能な仕組みであることを忘れないでください.
4-2. (参照)データをreduceとactionのコミュニケーションに変換します。
const reducer = (state = 0, action) => {
if(action.type === "ADD"){
state = state + 1
}
if(action.type === "MINUS"){
state = state - 1
}
console.log(state)
return state
}
const countStore = createStore(reducer)
countStore.dispatch({type : "ADD"})
上記のコードを実行すると前に示したように,0,1が順次現れる.
4-3. (参照)actionによるデータの変更の原理
ここで疑問に思うかもしれませんが、最初のreduceが呼び出されたとき、state値を直接変更すればいいのではないかと思うかもしれません.
結論から言えば変えられる.
Actionの核心はreduceとのコミュニケーションであり,外部からreduceを呼び出すことができる.
これはdispatchでactionを呼び出すときにreduceをもう一度呼び出す原理に基づいて実現されることを覚えておいてください.
Reference
この問題について([Redux]Reduxベース-Reduxを使用した構造について), 我々は、より多くの情報をここで見つけました https://velog.io/@gyrbs22/Redux-redux-기본-redux를-활용하기-위한-구조-이해テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol