useContextとuseStateの組み合わせでは、ステートの更新が発生したらそれに関係するコンポーネントのみ再レンダリングされてほしいところ、一つのコンテキストに全ての情報を入れてしまう場合はそれに依存する全てのコンポーネントが再レンダリングされてしまう。

Recoilにもselectorという概念があり、これはReduxのselectorと一対一に対応するものでないが、概ね似た目的を達成するために存在している。そして、Recoilも、ステートが更新されてもselectorの結果が変わらなければコンポーネントの再レンダリングが発生しない。