A predictable state container for Javascript apps
μνκ΄λ¦¬ λΌμ΄λΈλ¬λ¦¬. 리λμ€λ₯Ό μ¬μ©νλ©΄, μ¬λ¬λΆμ΄ λ§λ€κ² λ μ»΄ν¬λνΈλ€μ μν κ΄λ ¨ λ‘μ§λ€μ λ€λ₯Έ νμΌλ€λ‘ λΆλ¦¬μμΌμ λμ± ν¨μ¨μ μΌλ‘ κ΄λ¦¬ ν μ μλ€. λν, μ»΄ν¬λνΈλΌλ¦¬ μνλ₯Ό 곡μ νκ² λ λ μ¬λ¬ μ»΄ν¬λνΈλ₯Ό κ±°μΉμ§ μκ³ λ μμ½κ² μν κ°μ μ λ¬ ν μ μλ€.
π¨ 리λμ€μ λ―Έλ€μ¨μ΄λΌλ κΈ°λ₯μ ν΅νμ¬ λΉλκΈ° μμ , λ‘κΉ λ±μ νμ₯μ μΈ μμ λ€μ λμ± μ½κ² ν μ λ μκ² ν΄μ€λ€.
1. μ‘μ (Action)
: μνμ μ΄λ ν λ³νκ° νμνκ² λ λ, μ‘μ μ΄λ κ²μ λ°μμν¨λ€. μ΄λ, νλμ κ°μ²΄λ‘ νν. μ‘μ κ°μ²΄μ νμ{ type: "TOGGLE_VALUE" }
μ‘μ κ°μ²΄λ type νλλ₯Ό νμμ μΌλ‘ κ°μ§κ³ μμ΄μΌνκ³ , κ·Έ μΈμ κ°λ€μ λ§μλλ‘ λ£μ μ μλ€.
{ type: "ADD_TODO", data: { id: 0, text: "리λμ€ λ°°μ°κΈ°" } }
- μ‘μ μμ±ν¨μ(Action Creator)
: μ‘μ μμ±ν¨μλ, μ‘μ μ λ§λλ ν¨μ. λ¨μν νλΌλ―Έν°λ₯Ό λ°μμμ μ‘μ κ°μ²΄ ννλ‘ λ§λ€μ΄ μ€λ€.function addTodo(data) { return { type: "ADD_TODO", data }; } // νμ΄ν ν¨μλ‘λ λ§λ€ μ μμ΅λλ€. const changeInput = text => ({ type: "CHANGE_INPUT", text });
- μ€ν μ΄(Store)
: 리λμ€μμλ ν μ ν리μΌμ΄μ λΉ νλμ μ€ν μ΄λ₯Ό λ§λ€κ² λλ€. μ€ν μ΄ μμλ, νμ¬μ μ± μν, 리λμκ° λ€μ΄κ° μκ³ , μΆκ°μ μΌλ‘ λͺκ°μ§ λ΄μ₯ ν¨μλ€μ΄ μλ€.- λμ€ν¨μΉ(Dispatch)
: μ€ν μ΄μ λ΄μ₯ν¨μ μ€ νλ. λμ€ν¨μΉλ, μ‘μ μ λ°μ μν€λ κ²μ΄λΌκ³ μ΄ν΄. dispatchλΌλ ν¨μμλ μ‘μ μ νλΌλ―Έν°λ‘ μ λ¬- ꡬλ (subscribe)
: subscribeν¨μλ, ν¨μ ννμ κ°μ νλΌλ―Έν°λ‘ λ°μμ¨λ€. subscribe ν¨μμ νΉμ ν¨μλ₯Ό μ λ¬ν΄μ£Όλ©΄, μ‘μ μ΄ λμ€ν¨μΉ λμμ λ λ§λ€ μ λ¬ν΄μ€ ν¨μκ° νΈμΆ
μ°Έκ³ Blog
< https://velog.io/@velopert/Redux-1-%EC%86%8C%EA%B0%9C-%EB%B0%8F-%EA%B0%9C%EB%85%90%EC%A0%95%EB%A6%AC-zxjlta8ywt >
< https://kbennycc.blogspot.com/2019/02/0113-react-redux.html >
< https://medium.com/@ca3rot/%EC%95%84%EB%A7%88-%EC%9D%B4%EA%B2%8C-%EC%A0%9C%EC%9D%BC-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-%EC%89%AC%EC%9A%B8%EA%B1%B8%EC%9A%94-react-redux-%ED%94%8C%EB%A1%9C%EC%9A%B0%EC%9D%98-%EC%9D%B4%ED%95%B4-1585e911a0a6 >