反应本地停止useEffect()无限循环

时间:2020-09-22 16:17:10

标签: react-native

我制作了一个页面,每5秒请求一次API,当有新数据导航到另一个屏幕时, 但是它并没有停止循环,我注意到它继续发出请求。 我希望循环每5或10秒运行一次,当它导航到另一个页面停止时,每个请求之间也必须有超时(几秒钟)。

这是我的代码:

function SearchForAMatch( {navigation, route}) {

  useEffect(() => {
    const interval = setInterval(() => {
      let ew = ''
      fetch('https://SomeAPIWebsite/getrooms')
      .then(response => response.text())
      .then(data =>  {
        ew = data.split("\n");
        for(let i = 0; i < ew.length - 1; i++)
        {
          if(ew[i].split('(')[0] == route.params?.region && ew[i].split('(')[2].split('/')[1] == route.params?.players && ew[i].split('(')[2].split('/')[0] != ew[i].split('(')[2].split('/')[1])
          { // new information! navigate to 'JoinRoom' screen
            navigation.navigate('JoinRoom', {row: i});
          }
        }
      })
    
    }, 5000);
    return () => clearInterval(interval);
  }, []);


  return (
    <ImageBackground source={image} style={styles.backgroundImage}>
    <View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>
    <Text style={{fontSize: hp('3%'), color: 'white', padding: 5, textAlign: 'center'}}>{route.params?.players}</Text>
    </View>
    </ImageBackground>
  );
}

1 个答案:

答案 0 :(得分:1)

也许只是清除导航行后面有数据的时间间隔。

for i in num:
        print(i, end='')