React-Native NetInfo не работает после того, как однажды сработал? - PullRequest
0 голосов
/ 13 апреля 2020

Я новичок вact-native У меня проблема с проверкой соединения inte rnet. Когда я открываю свое приложение и отключаюсь для inte rnet (Wi-Fi или сотовый оба), я получаю сообщение с предупреждением, это то, что я хочу. Но когда я снова подключаюсь к inte rnet и пытаюсь снова, я вижу, что в моей консоли состояние снова ложно. НЕТ способа увидеть правду. Где я сделал ошибку?

` const [isInternetReachable, setInternetReachable] = useState(true)

  useEffect(() => {
    const unsubscribe = NetInfo.addEventListener(state => { 
      if (!(state.isInternetReachable === null)) {
        setInternetReachable(state.isInternetReachable);
      }
    });
  },[])

  useEffect(() => {
    chechConnection();
 }, [isInternetReachable]);

  const chechConnection = () => {
    if(isInternetReachable === false) {
      Alert.alert(
        'Internet fail',
        'Try again.',
        [
          {text: 'Try Again', onPress: chechConnection},
          {text: 'Exit', onPress:() => RNExitApp.exitApp()},
        ],
        { cancelable: false }
      )
    }
  };`

Ответы [ 2 ]

0 голосов
/ 13 апреля 2020

Я обнаружил проблему, когда я использую условие If или переключаю, мое состояние соединения не меняется. Когда я не использую переключатель или если состояние соединения работает хорошо.

0 голосов
/ 13 апреля 2020

useEffect, отвечающий за setInternetReachable, будет запускаться только один раз, несмотря ни на что.

Попробуйте так:

  const [connected, setConnected] = useState();

  useEffect(() => {
    const unsubscribe = NetInfo.addEventListener((state) => {
      console.log("Connection type", state.type);

      console.log("Is Internet Reachable?", state.isInternetReachable);

      if (connected !== state.isInternetReachable)
        setConnected(state.isInternetReachable);
    });

    return () => unsubscribe();
  }, [connected]);
...