Хорошо, я могу предположить, что вы пытаетесь получить или проверить локальное хранилище для пользовательских данных в вашем UserService.То, что я бы предложил, это не пытаться остановить рендеринг или «монтирование» компонента с помощью ловушки жизненного цикла componentWillMount
.Вместо этого вы можете визуализировать ActivityIndicator
, пока UserService.findAll()
находит пользователя (управляется состоянием), поскольку вы не хотите, чтобы компонент отображался, пока UserService не завершит процесс поиска пользователя.
что-то вроде этого
В вашем конструкторе присвойте значение, которое будет использоваться для визуализации ActivityIndicator
или компонента (я предполагаю, что компонент login
).Давайте назовем это searching
например:
// in your constructor
this.state = {
searching : true;
}
// assuming it is an async function
async componentWillMount(){
var user = await UserService.findAll();
if (user.length > 0) {
Actions.home({type : ActionConst.REPLACE}); // no need to update the state here as we will navigate to another screen resetting the navigation stack
}else {
this.setState({
searching : false
});
}
}
// other methods etc
render(){
return this.state.searching ? <ActivityIndicator /> : <Login />
}
конечно, это резюме метода рендеринга, но вы получите суть:)