This is the beauty of delegating data fetching to a GraphQL client, whether it’s Relay or Apollo. When you start “thinking in GraphQL,” you become more concerned with what props your component needs to render and less concerned with how you’re going to get them.
There are also cases where you’re managing very complex state that needs trackable and consistent control: lower-level things like a client-side cache, offline syncing etc. Redux is great for these cases. In fact, some popular GraphQL libraries like Apollo can use Redux under the hood as a cache.