markdalgleish.com/projects/bespoke.js
Вот эту заюзайте, тут другой принцип совсем, нет вьюпорта. Всё переходы описываются ручками на css, намного гибче чем классические карусели.
class Login extends Component {
componentWillMount() {
//какой-то слушатель websocket, в случае положительного ответа сервера в конце делает так:
this.props.history.push('/main');
}
render() {
return <div>Loading...</div>
}
}
Для решения этой задачи существует Virtual DOM. Если не хотите использовать большую готовую библиотеку типа Vuejs, возьмите preact. Если не ошибаюсь, в нём реализована асинхронная обработка изменений с использованием промисов.