dispatchはアクションを引数に受け取り、reducerを動かします。reducerには現在のstoreとactionが渡され、storeの値を更新します。dispatch関数の実行の仕方は二通りあり、一つ目の方法はstoreの値を弄りたいコンポーネントの引数にdispatchを指定してそのコンポーネントの中で使用する方法です。二つ目の方法はconnect関数の第二引数でmapStateToProps関数を指定してその関数の中でdispatchを呼び出して実行します。両者の違いは後者の方はコンポーネントの中でdispatchを扱わずに直接アクションを動かす記述をすることができて可読性が増します。
hooks
クラスコンポーネントではメンバ変数でstateを管理し、状態を保持していたのですが、関数コンポーネントでは関数が実行されるたびに内部の変数などは削除され、状態を保持することができません。そこで関数の外側で値を保持するための仕組みがhooksです。hooksの外部からのstateをimportで呼び出し、関数の中に入れ込み、値を書き換えたり呼び出したりします。クラスコンポーネントで扱うstateとの違いはクラスコンポーネントでは状況が保持され最新のstateを呼び出すことをしています。一方関数コンポーネントで扱うhooksのstateは外部から呼び出し、それに新しい値を足して値を反映させます。