Я использовал навигацию по вкладкам реактивной навигации. Мне нужно вызывать функцию loadData в componentDidMount каждый раз, когда нажимается вкладка. Поэтому я использую в нем addListener. Но проблема в том, что для отображения данных требуется слишком много времени. Иногда он работает без проблем, а иногда показывает только загрузку данных... все время. Правильно ли я использую addListener? Заранее спасибо.
Home.js
state = {
storageCheck: true
};
componentDidMount() {
this._unsubscribe = this.props.navigation.addListener('willFocus', () => {
this.loadData();
});
}
componentWillUnmount() {
this._unsubscribe.remove();
}
loadData = () => {
this.setState({
storageCheck: false
})
}
render() {
if (this.state.storageCheck) {
return <View>
<Text>Loading Data...</Text>
</View>
}
return (
<View>
<Text>Data</Text>
</View>
)}
Навигация по вкладкам
const TabNavigator = createBottomTabNavigator({
Home: {
screen: Home
},
Profile: {
screen: Profile,
navigationOptions: ({ navigation }) => ({
// title: 'Profile',
})
},
Setting: {
screen: Setting,
}
},
{
defaultNavigationOptions: ({ navigation }) => ({
tabBarIcon: ({ focused, tintColor }) => {
const { routeName } = navigation.state;
let iconName;
if (routeName === 'Home') {
iconName = 'home';
} else if (routeName === 'Profile') {
iconName = 'account-circle';
} else if (routeName === 'Setting') {
iconName = 'settings';
}
return <MaterialIcons name={iconName} size={28} color={tintColor} />;
},
})
}
);
export default createAppContainer(TabNavigator);