Придерживайтесь правила, что компоненты не знают ничего о том, что происходит с данными до того момента, когда они попали в компонент в том формате, в котором они ему нужны.
У нас работает так
1. Вызываем action и получаем данные с rest api в нем же (promise в помощь)
2. передаем данные в reducer
3. получаем данные в контейнер, который отвечает за бизнес логику, в нем же у нас redux connect, обрабатываем данные до формата, который требуется компоненту, тут же mapDispatchToProps со всеми функциями для вызова actions внутри компонента, mapStateToProps - дефолтный state для компонента, как правило содержит isLoading, isError, если action еще не отработал или отработал не верно. Здесь же мы пишем обработчики для мутирования данных
4. Передаем данные в компонент и отображаем их. Больше ничего компонент делать не должен. Вся бизнес логика в контейнере, компонент только отображает/вызывает функции контейнера для мутации данных и вызова actions.
Если вы погружены в react/redux, то вы поймете о чем речь, если нет, вам будет трудно понять о чем я выше написал.