React native 如何在react native中更改屏幕时删除状态值
我正在制作一个react原生android应用程序,其中componentWillUnmount()不起作用。假设用户在特定屏幕的文本输入中输入一个文本值,然后转到下一个屏幕。之后,当用户按下“后退”按钮时,我希望删除在文本输入中写入的文本值。我尝试在代码中添加这一行React native 如何在react native中更改屏幕时删除状态值,react-native,React Native,我正在制作一个react原生android应用程序,其中componentWillUnmount()不起作用。假设用户在特定屏幕的文本输入中输入一个文本值,然后转到下一个屏幕。之后,当用户按下“后退”按钮时,我希望删除在文本输入中写入的文本值。我尝试在代码中添加这一行 componentWillUnmount(){ this.setState({text:""}) } 基本上,我是在删除我在TextInput中输入的状态值。但这不起作用。在activity indicator的情况下
componentWillUnmount(){
this.setState({text:""})
}
基本上,我是在删除我在TextInput中输入的状态值。但这不起作用。在activity indicator的情况下也会发生同样的情况。当activity indicator开始提取数据时,我首先检查是否连接到internet。如果没有连接到internet,则通过导航导航导航到无网络屏幕。但当我按下back按钮时,我会从那里导航到无网络屏幕活动指示器不会消失?那么,在导航到不同屏幕后,如何删除组件中的所有状态值呢?React导航允许您添加侦听器,以便跟踪屏幕上发生的操作 您可以添加四个侦听器:
-屏幕将聚焦将聚焦
-屏幕聚焦(如果有转换,转换完成)didFocus
-屏幕将不聚焦将模糊
-屏幕未聚焦(如果有转换,转换完成)didBlur
willBlur
的一个示例,其他函数遵循相同的模式,您只需更改传递给函数的值
componentDidMount () {
this.didBlurSubscription = this.props.navigation.addListener(
'didBlur',
payload => {
// you can perform actions here when the screen `willBlur`
this.setState({text: ''});
}
);
}
componentWillUnmount () {
// remember to unsubscribe
if (this.didBlurSubscription) {
this.didBlurSubscription.remove();
}
}
当前解决方案不起作用的原因是,屏幕没有卸载,而是进入或离开焦点/模糊。因此将不会调用
组件willunmount
。此外,如果正在卸载组件,则不应尝试设置状态,因为这是一种模式,可能会导致内存泄漏 您是否检查了componentWillUnmount是否正在执行?可能您只是将新屏幕推到屏幕的堆栈中,因此仍然存在。在这种情况下,我将与Redux合作进行状态管理。更容易管理导航使用的依赖项是什么?反应导航!我使用createDrawerNavigator和createStackNavigator