TL; DR: отправить ваше действие после того, как вы настроили хранилище:
// const store = createStore(...); // wherever you have this line (often in index.js)
store.dispatch(actions.fetchListings());
И поместите заполнитель (или ничего не рендерит), пока он не разрешится:
<Routes />
{this.props.listings.length? <HomePage listings={this.props.listings} />:null}
...
NL, PR:
Когда создается экземпляр WrapperApp
, вызывается Apps
render
, а затем componentDidMount
, таким образом, ваш диспетчерский вызов запланирован после первого рендеринга. Лучше всего как можно быстрее отправлять действия по извлечению (запросы данных с сервера), они неблокируют. И пока они загружаются, отметьте это в рендере и а) ничего не показывайте (ноль) или б) покажите заполнитель: анимация загрузки, заставку, сообщение ...