Спасибо ребят, понял. Попробую:
1) async/await didMount()
2) чейин в конструкторе
3) поковырять redux-observable (всю логику туда перенести)
4) на крайний случай HOC
практика современных интерфейсов: добавить в стейт компонента булиевское значение isLoaded, написать асинхронный метод для загрузки данных который после fetch() меняет isLoaded на true и вызывать эту функцию как синхронную в componentDidMount(), в методе рендер выставить conditional render: isLoaded ? () : ()