Это нормальное поведение, рендер вызывается, чтобы вы могли предложить обратную связь с пользователем при загрузке чего-либо в фоновом режиме, вы должны показать пользователю что-то вроде индикатора активности , чтобы сообщить им, что ваше приложение не аварийно завершилось и извлекает данные.
В вашем методе will mount вы делаете асинхронный вызов и ожидаете ответ с «then», но вы вызываете this.setState({fetching:true});
вне возврата обещания, это означает, что он вызывается, как только выборка данных завершена. Чтобы вызвать неправильное состояние без данных, попробуйте поместить его в ваше разрешение обещания:
componentWillMount() {
SInfo.getItem("userdata",{}).then( JsonData => {
data = JSON.parse(JsonData)
console.log(data.nickname) //Show secon
this.setState({fetching:true});
});
}