Если бы вы могли предоставить больше информации, я мог бы дать вам лучший комментарий.
Но в своем собственном проекте я создал файл TimerCountdown.js и записал в него код ниже:
import React, { Component } from 'react';
import { View } from 'react-native';
import { RText } from '../../shared';
class TimerCountdown extends Component {
constructor(props) {
super(props);
this.state ={
timer: props.initialTime
}
}
componentDidMount(){
this.interval = setInterval(
() => this.setState((prevState)=> ({ timer: prevState.timer - 1 })),
1000
);
}
componentDidUpdate(){
if(this.state.timer === 1){
console.log("-------------------timer count down is leaking")
clearInterval(this.interval);
this.props.onTimerElapsed()
}
}
componentWillUnmount(){
clearInterval(this.interval);
this.props.onTimerElapsed()
}
render() {
return (
<Text style={this.props.style}> {this.state.timer} </Text>
)
}
}
export default TimerCountdown;
, который работает нормально и не протекает вообще (хитрость заключается в том, чтобы просто сделать этот компонент отдельным файлом, поэтому при обновлении он не влияет на остальную часть проекта).
Я использовал этот компонент, как показано ниже в других файлах js проекта:
<TimerCountdown initialTime={60}/>
вы можете применить желаемую конфигурацию к this.state.timer
и получить желаемый результат из нее.
Надеюсь, это поможет вам.