1

我是 react-native 的新手,我对互联网连接检查有疑问。当我打开我的应用程序并断开互联网连接(wifi 或蜂窝网络)时,我收到了一条我想要的警报消息。但是当我再次连接到互联网并再次尝试时,我看到我的控制台状态再次为假。没有办法看到真实的。我哪里做错了?

` 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 }
      )
    }
  };`
4

2 回答 2

0

无论如何,负责的 useEffectsetInternetReachable只会运行一次。

试试这样:

  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]);
于 2020-04-13T12:56:16.850 回答
0

我发现一个问题,当我使用 İf 条件或切换连接状态时,我的连接状态没有改变。当我不使用开关或连接状态正常时。

于 2020-04-13T18:18:16.510 回答