Comment vérifier la connexion Internet en React Native (Expo) ?

Comment vérifier la connexion Internet en React Native (Expo) ?

Salut les devs. Aujourd'hui, on va voir comment vérifier la connexion Internet dans une app React Native et afficher une alerte quand ça coupe. C'est pas sorcier, mais c'est super utile. Allez, on se lance !

1. Préparons le terrain

D'abord, assurez-vous d'avoir React Native installé. Si c'est pas le cas alors chercher à savoir comment le faire (⁠•⁠‿⁠•⁠) et après créons un projet, voilà comment faire :

npx react-native init OfflineAlertApp
cd OfflineAlertApp

Facile, non ?

2. La bibliothèque magique : NetInfo

Pour checker la connexion, on va utiliser NetInfo qui va surveiller le réseau. Installez-le comme ça :

npm install @react-native-community/netinfo

Boom ! Vous êtes prêt à tout surveiller.

3. Le code, Le code, Le code

Maintenant, le moment que vous attendiez tous. Voici le code qui va tout gérer :

import React, { useEffect, useState } from 'react';
import { View, Text, Alert } from 'react-native';
import NetInfo from '@react-native-community/netinfo';

const App = () => {
    const [isConnected, setConnected] = useState(true);

    useEffect(() => {
        const unsubscribe = NetInfo.addEventListener((state) => {
            setConnected(state.isConnected);
            if (!state.isConnected) {
                showAlert();
            }
        });

        return () => {
            unsubscribe();
        };
    }, []);

    const showAlert = () => {
        Alert.alert(
            'Connexion Internet',
            'Vous êtes hors-ligne. Certaines fonctionnalités peuvent être indisponibles.'
        );
    };

    return (
        <View>
            {isConnected ? <Text>En ligne</Text> : <Text>Hors-ligne</Text>}
        </View>
    );
};

export default App;

Ce code est plus sexy qu'un Macbook Pro, non? Demander à notre IA de rendre encore plus cool le code... ALLEZ Y TESTER (⁠.⁠ ⁠❛⁠ ⁠ᴗ⁠ ⁠❛⁠.⁠)


import React, { useEffect, useState } from 'react';
import { View, Text, Alert, StyleSheet, TouchableOpacity } from 'react-native';
import NetInfo from '@react-native-community/netinfo';
import { Ionicons } from '@expo/vector-icons';

const App = () => {
    const [isConnected, setConnected] = useState(true);

    useEffect(() => {
        const unsubscribe = NetInfo.addEventListener((state) => {
            setConnected(state.isConnected);
            if (!state.isConnected) {
                showAlert();
            }
        });

        return () => {
            unsubscribe();
        };
    }, []);

    const showAlert = () => {
        Alert.alert(
            'Connexion Internet',
            'Vous êtes hors-ligne. Certaines fonctionnalités peuvent être indisponibles.'
        );
    };

    return (
        <View style={styles.container}>
            <View style={styles.connectionStatus}>
                {isConnected ? (
                    <View style={styles.onlineContainer}>
                        <Ionicons name="md-checkmark-circle-outline" size={24} color="green" />
                        <Text style={styles.onlineText}>En ligne</Text>
                    </View>
                ) : (
                    <View style={styles.offlineContainer}>
                        <Ionicons name="md-close-circle-outline" size={24} color="red" />
                        <Text style={styles.offlineText}>Hors-ligne</Text>
                    </View>
                )}
            </View>
            <TouchableOpacity
                style={styles.button}
                onPress={() => {
                    NetInfo.fetch().then((state) => {
                        setConnected(state.isConnected);
                        if (!state.isConnected) {
                            showAlert();
                        }
                    });
                }}
            >
                <Text style={styles.buttonText}>Actualiser</Text>
            </TouchableOpacity>
        </View>
    );
};

const styles = StyleSheet.create({
    container: {
        flex: 1,
        justifyContent: 'center',
        alignItems: 'center',
    },
    connectionStatus: {
        flexDirection: 'row',
        alignItems: 'center',
        marginBottom: 20,
    },
    onlineContainer: {
        flexDirection: 'row',
        alignItems: 'center',
    },
    offlineContainer: {
        flexDirection: 'row',
        alignItems: 'center',
    },
    onlineText: {
        marginLeft: 5,
        color: 'green',
    },
    offlineText: {
        marginLeft: 5,
        color: 'red',
    },
    button: {
        backgroundColor: '#007BFF',
        padding: 10,
        borderRadius: 5,
    },
    buttonText: {
        color: 'white',
        fontWeight: 'bold',
    },
});

export default App;

Démo finale

démo

La fonction showAlert est le truc qui va faire flipper vos utilisateurs quand ils perdent la connexion. Vous pouvez la customiser pour qu'elle soit moins flippante si vous voulez.

Conclusion

Et voilà ! Vous savez maintenant comment vérifier la connexion Internet dans une app React Native. C'est pas plus compliqué que ça. Allez, codez bien !

  • A+
  • A-