Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
React native React本机组件将不调用_React Native_React Native Navigation - Fatal编程技术网

React native React本机组件将不调用

React native React本机组件将不调用,react-native,react-native-navigation,React Native,React Native Navigation,我在react native方面是新手,我的堆栈中有两个屏幕。登录并返回主页 我想从主页上的按钮返回登录 我正在写这段代码 this.props.navigation.navigate('loginScreen') 但在登录屏幕中,componentWillMount方法未调用。当用户从家里进入登录屏幕时,我想重置我的表单 有人能帮我吗 提前感谢。要从主页登录返回,如果屏幕立即位于主页之前,则应使用this.props.navigation.goBack() 其次,您不应该使用组件willmo

我在react native方面是新手,我的堆栈中有两个屏幕。登录并返回主页

我想从主页上的按钮返回登录

我正在写这段代码

this.props.navigation.navigate('loginScreen')
但在登录屏幕中,componentWillMount方法未调用。当用户从家里进入登录屏幕时,我想重置我的表单

有人能帮我吗


提前感谢。

要从主页登录返回,如果屏幕立即位于
主页
之前,则应使用
this.props.navigation.goBack()

其次,您不应该使用
组件willmount
,因为它已被弃用,并且将从React 17开始删除。而是使用
componentDidMount

由于组件已装入,因此它不会再次调用react lifecycle events
componentDidMount
。因此,您应该使用
react导航
didFocus
事件

didFocus:屏幕聚焦(如果有转换,转换完成)


由于主屏幕和登录屏幕都位于相同的StackNavigator下,因此当您从主屏幕返回登录时,状态保持不变,因为组件不会卸载。解决此问题的推荐方法是使用react navigation的SwitchNavigator。请阅读下面文档中非常有用的部分

您可能还不熟悉SwitchNavigator。目的 SwitchNavigator一次只能显示一个屏幕。默认情况下, 它不处理返回操作,并将路由重置为默认路由 说明你何时离开


this.props.navigation.navigate('loginScreen')
不起作用,因为您现在处于
loginScreen

如果要重新启动页面,则此代码不正确。因为有一个循环

正确代码:

仅当
主页导航到
登录屏幕时使用:

this.props.navigation.push('loginScreen')

不在“componentWillMount”中完美的解决方案是使用
这个.props.navigation.push('Login')
,我尝试了
开关导航器
,但它没有为标题提供
导航选项。

谢谢,但还有一个问题,道具未从主页设置到登录屏幕:-componentDidMount(){this.\u onFocusListener=this.props.navigation.addListener('didFocus',(有效负载)=>{//如果(this.props.isFromLogeOut='1'){this.setState,请在此处执行重置操作({email:'aaa',密码:'',enableDoneButton:false}}}};}主屏幕:-this.props.navigation.navigate('loginStack',{isFromLogedOut:'1'})在
payload
中,您可以获得详细信息,包括
lastState
,您可以在主屏幕上查看
lastScreen
及其参数,然后返回登录,并使用您建议的相同代码,实际上这不是一个错误的答案,只是格式不正确。@morteza所说的是navigation.na如果屏幕已被访问,则vigate()会让您进入上一个屏幕;如果屏幕未被访问,则会推送一个新屏幕。如果希望调用登录屏幕的组件,则使用navigation.push()应该可以。
this.props.navigation.push('loginScreen')