gpt4 book ai didi

javascript - 使用 StackNavigator 导航到另一个页面时销毁当前页面并停止上一页上的所有正在运行的进程

转载 作者:行者123 更新时间:2023-12-03 00:46:42 36 4
gpt4 key购买 nike

我正在使用react-native,当我尝试使用StackNavigator导航到另一个页面时,上一个页面正在后台运行

这是 App.js

import Login from './app/component/Login';
import Menu from './app/component/Menu';
import Guide from './app/component/additions/Guide';
import { StackNavigator } from 'react-navigation';

const Navigator = StackNavigator({
login: {screen: Login},
main: {screen: Menu},
guide: {screen: Guide},
},{ headerMode: 'none' });

我有一个像这样的 Guid.js

componentDidMount() {
setInterval(() => {
console.log('I do not leak');
}, 1000);
}

render() {
const {navigate} = this.props.navigation;
return(
<TouchableOpacity onPress={() => navigate('main')}>
<Text> navigate to main </Text>
</TouchableOpacity>
)
}

问题是,即使我导航到 main 页面,我仍然得到在 Guide.js 的 componentDidMount 内记录的时间间隔,甚至返回在该页面上,它运行 componentDidMount 并再次运行我的日志,这意味着间隔再次运行,我想要做的是在导航到另一个页面之后或同时,我想销毁指南。我来自 Node.js,我来自的页面,我有一个运行 WebView 的页面,我不想对该页面执行相同的操作,我该怎么做?

最佳答案

一旦设置了计时器,它们就会异步运行,如果离开屏幕时不再需要计时器,则必须将其删除,如下所示:

constructor(props) {
this.timerID = null;
}

componentDidMount() {
this.timerID = setInterval(() => {
console.log('I do not leak');
}, 1000);
}

/**
* Frees up timer if it is set.
*/
componentWillUnmount() {
if (this.timerID != null) {
clearInterval(this.timerID);
}
}

关于javascript - 使用 StackNavigator 导航到另一个页面时销毁当前页面并停止上一页上的所有正在运行的进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53213445/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com