Таймер обратного отсчета React Native продолжает сбрасываться - PullRequest
1 голос
/ 21 октября 2019

У меня установлен таймер обратного отсчета каждые 20 секунд, отображается предупреждение и выбор для продления таймера или отмены. Каждый раз, когда я перехожу на другой экран в моем приложении и возвращаюсь на домашнюю страницу, таймер продолжает сбрасываться сам, и в фоновом режиме будет несколько таймеров, а затем несколько запросов. Это относится даже к расширению таймера.

Как я могу остановить его сброс настроек таймера каждый раз, когда я прохожу другой экран в приложении и держу его на одном таймере?

Пожалуйста, посмотрите мойпример кода:

import CountDown from 'react-native-countdown-component';

export default class App extends React.Component {



constructor(props) {
    super(props);

    this.state = {
      timer: 20,
    };
  }
};
timesUp = () => {
    Alert.alert(
      "ALERT ",
      'Would you like to extend timer?',
      [
        {
          text: 'Extend Timer',
          onPress: () =>
            this.setState(previousState => ({
              timerId: ++previousState.timerId,
            })),
        },

        {
          text: 'Cancel',
          onPress: () => console.log('Cancel Pressed'),
        },
      ],
      { cancelable: false }
    );
  };

render(){
 return(
        <View style={styles.countdownContainer}>
          <CountDown
            id={this.state.timerId}
            until={this.state.timer}
            onFinish={this.timesUp}
            timeToShow={['M', 'S']}
            digitStyle={{ backgroundColor: '#FFF' }}
            size={20}
          />
        </View>
 );
}

1 Ответ

1 голос
/ 21 октября 2019

Как я могу остановить его от сброса таймера каждый раз, когда я прохожу через другой экран

Он сбрасывается, потому что компонент отключен при смене экрана.

Вы можете определить свой таймер в компоненте top level . Компонент верхнего уровня никогда не отключается, поэтому ваш таймер не будет отменен при изменении экрана.

...