React native React本机组件将不调用
我在react native方面是新手,我的堆栈中有两个屏幕。登录并返回主页 我想从主页上的按钮返回登录 我正在写这段代码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
this.props.navigation.navigate('loginScreen')
但在登录屏幕中,componentWillMount方法未调用。当用户从家里进入登录屏幕时,我想重置我的表单
有人能帮我吗
提前感谢。要从主页登录返回,如果屏幕立即位于
主页
之前,则应使用this.props.navigation.goBack()
其次,您不应该使用组件willmount
,因为它已被弃用,并且将从React 17开始删除。而是使用componentDidMount
由于组件已装入,因此它不会再次调用react lifecycle eventscomponentDidMount
。因此,您应该使用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')