async componentDidMount () {
this._isMounted = true;
await this.showPosts();
}
componentDidUpdate () {
this.showPosts();
}
showPosts = async () => {
try {
var userID = await AsyncStorage.getItem('userID');
fetch(strings.baseUri+"getPostWithUserID", {
method: 'POST',
headers: {
Accept: 'application/json',
'Content-Type': 'application/json'
},
body: JSON.stringify({
"user_id": userID
})
})
.then((response) => response.json())
.then((responseJson) => {
let jsonObj = JSON.parse(JSON.stringify(responseJson));
if (jsonObj.status=="true") {
this.setState({
data: responseJson.data,
imageSrc: responseJson.data.imgSrc,
});
}
else {
if (this._isMounted) {
this.setState({show: false});
}
}
})
.catch((error) => {
console.error(error);
});
}
catch (err) {
console.warn(err);
}
}
componentWillUnmount () {
this._isMounted = false;
}
showPosts
- это моя функция, которая извлекает данные и отображает их в плоский список.
<FlatList
data={this.state.data}
keyExtractor={(index) => index.toString()}
renderItem={ ({item,index}) => this._renderItem(item,index) }
extraData={[ this.state.checked, this.state.data ]}
/>
- Теперь, когда я загружаю одно сообщение и возвращаюсь к моему домашнему экрану, который вызывает
showPosts
, и проверяю его в моем эмуляторе, перезагружая приложение снова, оно показывает мне сообщение.
- И теперь, когда я загружаю другое сообщение и возвращаюсь на свой домашний экран, мне не нужно перезагружать мое приложение в эмуляторе, но мой
componentDidUpdate
вызывается и автоматически обновляет экран и показывает мне новое сообщение.
Мой вопрос заключается в том, почему я должен перезагружать (перезагружать его, нажимая несколько раз клавишу R) мое приложение снова, когда на домашнем экране нет записей. Я хочу, чтобы мой экран обновлялся автоматически при загрузке первого сообщения. Экран обновляется автоматически только там, где есть более 1 сообщения.
P.S. - Я также попробовал onRefresh()
, не помог в моей проблеме.