Javascript 如何使用stack navigator通过按键从一个屏幕导航到另一个屏幕?
当按下可触摸的不透明样式按钮时,我希望从登录屏幕导航到注册屏幕。我还想将初始屏幕设置为登录屏幕。然而,当我尝试对他人有效的解决方案时,我会出现错误或意外行为。下面是我的LoginForm类的一部分,它是按下按钮的地方Javascript 如何使用stack navigator通过按键从一个屏幕导航到另一个屏幕?,javascript,android,react-native,user-interface,react-navigation,Javascript,Android,React Native,User Interface,React Navigation,当按下可触摸的不透明样式按钮时,我希望从登录屏幕导航到注册屏幕。我还想将初始屏幕设置为登录屏幕。然而,当我尝试对他人有效的解决方案时,我会出现错误或意外行为。下面是我的LoginForm类的一部分,它是按下按钮的地方 import React, {Component} from 'react'; import { StyleSheet, View, TextInput, TouchableOpacity, Text} from 'react-native '; export default c
import React, {Component} from 'react';
import { StyleSheet, View, TextInput, TouchableOpacity, Text} from 'react-native
';
export default class LoginForm extends Component {
startRegistration() {
this.props.navigation.navigate('Registration');
}
<TouchableOpacity onPress={this.startRegistration} style={style
s.buttonRegister}>
<Text style={styles.buttonText}>REGISTER</Text>
</TouchableOpacity>
然而,当我点击注册按钮时,我得到一个错误“找不到变量:导航”
我尝试的另一个变体是将App.js文件中的createStackNavigator函数更改为:
const AppNavigator = createStackNavigator({
screen: Login,
screen: Registration
});
显然,如果没有初始路径,则表明行为不正常,并且在启动应用程序时,应用程序会直接进入注册屏幕,但没有错误。我的createStackNavigator函数有什么问题吗?而不是
{这是startRegistration}
做
{()=>this.startRegistration()}
另一种解决方案是在构造函数中绑定函数
this.startRegistration.bind(this)而不是
{这是startRegistration}
做
{()=>this.startRegistration()}
另一种解决方案是在构造函数中绑定函数
this.startRegistration.bind(this)您需要将导航作为道具传递,如下所示:
<MyListComponent navigation={this.props.navigation} />
您需要将导航作为道具传递,如下所示:
<MyListComponent navigation={this.props.navigation} />
试试这个startRegistration=()=>{this.props.navigation.navigate('Registration');}
试试这个startRegistration=()=>{this.props.navigation.navigation('Registration');}
是的,谢谢,我开始觉得这是个问题,但不知道如何通过它。然而,这段代码会去哪里?在App.js中或特定组件内部?您可以在任何组件中执行此操作,只要导航提供程序通过React的标准上下文Api传递给所有子组件。是的,谢谢。我开始认为这是错误的,但不知道如何传递它。然而,这段代码会去哪里?在App.js中或特定组件内部?您可以在任何组件中执行此操作,只要导航提供程序通过React的标准上下文Api传递给所有子组件。
<MyListComponent navigation={this.props.navigation} />