Запоминайте id таймера, и в методе componentWillUnmount удаляйте таймер через clearTimeout
Будет как-то так
export default class LoadingMask extends React.Component {
constructor(props) {
super(props)
this.state = {
togle: false
}
this._timeId = null;
}
componentDidMount () {
this._timeId = setTimeout(() => this.setState({togle: true}), 3000)
}
componentWillUnmount () {
clearTimeout(this._timeId);
}
render() {
return (
<View>
{this.state.togle ?
<View style={{flexDirection: 'row', justifyContent: "center", marginTop: 20,}}>
<Text style={{marginRight: 20, color: '#4488fe'}} onPress={this.props.action}>Попробовать еще раз?</Text>
<Ionicons name="md-refresh" size={20} color="#4488fe" />
</View>
: <ActivityIndicator size="large" color="#CCC" />
}
</View>
)
}
}