[React] Redux
Redux
(of a topic, attributive, postpositive) Redone, restored, brought back, or revisited. 帰りました.
After an unusually cold August, September felt like summer redux as a heatwave sent temperatures soaring.
reduxという言葉の意味とは関係ないようです.
なぜReduxが必要なのですか?
Reduxは...
Local stateは、1つの構成部品で定義され、その構成部品のみで管理されます.
グローバル・ステータスは、1つの構成部品内で定義され、別の構成部品によって管理されるステータスです.
Reactでは、サブエレメントが親エレメントのステータスにアクセスするには、propsでステータスまたはステータスを変更する関数を渡す必要があります.ただし、ステップ5の下のサブコンポーネントに渡さなければならない場合は、各サブコンポーネントのpropsに渡さなければならない.各構成部品にこのpropsが必要とされるとは限らず、途中でエラーが発生すると管理が困難になります.したがって、Reduxを使用してグローバル状態リポジトリを作成し、サブコンポーネントを巡回することなく状態にアクセスできます.
3 principles of redux
Single source of truth (store)
State is read-only (only through action)
Changes are made with pure functions (reducer function)
Redux flow
import { createStore } from 'redux'
// REDUCER
// 현재의 state 와 action 객체를 받아 새로운 state 를 return 하는 함수.
function myReducer(state = { value: 0 }, action) {
switch(action.type) {
case 'increment':
return { value: state.value + action.value }
case 'decrement':
return { value: state.value - 1 }
}
}
// STORE
// app 의 state 를 들고 있는 store 객체이다.
const store = createStore(myReducer)
// ACTION
// Action creator - action 객체를 만든다.
function increment(value) {
return {
type: 'increment',
value // value: value
}
}
function decrement(){
return { type: 'decrement' }
}
// DISPATCH
// 상태를 update 하는 유일한 방법은 dispatch() 함수에 action 객체를 전달하는 것이다.
// store는 reducer 함수를 실행하고 상태를 update 하여 저장한다.
function handleIncrement(value){
store.dispatch(increment(value))
}
function handleDecrement(){
store.dispatch(decrement())
}
// DISPATCH for react-redux (redux hooks)
useDispatch(함수)
// state 조회
handleIncrement(4)
console.log(state.getState()) // { value: 4 }
// SELECTOR
// Selector 함수는 어떤 state 를 store 에서 가져오는지 지정하는 함수다.
const selectMyValue = function(state) { return state.value }
// 'value' 라는 상태를 가져올 것이다.
const currentValue = selectMyValue(store.getState())
console.log(currentValue) // 4
// SELECTOR for react-redux (redux hooks)
const state = useSelector(state => state.myReducer);
画像:https://redux.js.org/tutorials/essentials/part-1-overview-concepts
Reduxを使用するとreactistateを使用しないわけではありません.二つを混ぜて使う.
通常、自分のコンポーネントで解決するstateはreact stateを使用し、propsで渡されるstateはreduxを使用するのがよい.
ひどうきどうさせいさんしゃ
リデスが非同期タスクを処理する場合、redux-thunkというミドルウェアがよく使用されます.
でもちょっとわかりにくい
そしてRedux-Saga
Presentational vs Container components
コンポーネントを表す:寸法を生成するコンポーネント
container component:ステータスと機能を管理するコンポーネント
Reference
この問題について([React] Redux), 我々は、より多くの情報をここで見つけました https://velog.io/@jhoryong/Redux-Reduxテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol