Я думаю, что будет трудно избежать повторного рендеринга, если вам придется загружать некоторые данные асинхронно.
Вы можете сохранить дополнительную переменную состояния loading
и просто возвращать null
в методе рендеринга, пока ваши данные не загрузятся.
Пример
class App extends React.Component {
state = {
activeNav: 0,
nav: [],
showDropdown: false,
showNavDropdown: false,
user: [],
loading: true
};
componentDidMount() {
Promise.all(NavService.getNav(), AuthService.getProfile())
.then(([nav, user]) => {
this.setState({ nav, user, loading: false });
})
.catch(error => {
this.setState({ loading: false });
});
}
render() {
const {
activeNav,
nav,
showDropdown,
showNavDropdown,
user,
loading
} = this.state;
if (loading) {
return null;
}
// ...
}
}