最近、開発を勉強しようと思って始めたのがReactでその中でReduxの概念を†完全に理解†したので備忘録としてメモを書きます。
あくまでも自分用 として書くのでご了承ください。また、間違え等ありましたらご指摘くださると幸いです。
そもそもReduxとは??
Reduxとは、Reactのライブラリの1つで(実はReact専用ではないが)、Stateをグローバルな状態に保持するのに役に立つ。 ReactHooksのuseStateは、各々のコンポーネントの状態を保持できるがそれを他のコンポーネントに伝えるためには Props を使い、順番に伝達していかなければならない。それだと、同じ状態を複数のコンポーネントで使うためには、その使用するコンポーネント全てにPropsを通して伝える必要があり、管理やメンテナンスがとても大変だった。 しかし、 その状態を同じ場所で一括に管理できるようにしたのがReduxである。 各々のコンポーネントである状態を知りたい時、同じ参照先、Reduxの言葉だとStoreを見ればよくなる。Reduxで使う用語
大まかな概念は以上の通りなのだが、Reduxを難しく感じさせる理由はその手順、手続きにある。 例えば、あるボタンをクリックした時 count というStateを+1したいとする。 大雑把にやりたいことを実現しようとすると、以下の様な流れが直感的だ。 (クリックしたという情報をStoreに伝える)=>(Storeにあるcountという状態を+1する) しかし、現実には以下のような手続きを踏むことになる。 (クリックする)=>("+1したい"というActionが発行される)=> ("+1したい"というActionがStoreに伝えられる(これをdispatchという) )=> (Storeのcountを変更するためにReducerという関数を通す)=> (Reducerを通してできた新しいcountを値をStoreのcountに設定する)以上のような、わけのわからない手続きを踏むことで、ようやく状態が変更されるわけだ。
しかし、偉い人が考えたのだから、めんどくさいのにもちゃんと理由がある。ここで、用語を1つづつ解説する。