reactjs - React Navigation this.props.navigation.navigate 没有导航到下一个屏幕
问题描述
我有一个Authentication
这样的屏幕:
import React, { Component } from 'react';
import { connect } from 'react-redux';
import Profile from './Profile';
import LoginOrSignup from './LoginOrSignup';
class Auth extends Component {
render() {
if (this.props.isLoggedIn) {
return <Profile />;
} else {
return <LoginOrSignup />;
}
}
}
const mapStateToProps = (state, ownProps) => {
return {
isLoggedIn: state.auth.isLoggedIn
};
}
export default connect(mapStateToProps)(Auth);
在我的LoginOrSignup
屏幕上,我有一个submit
按钮包含一个导航功能,如下所示:
this.props.navigation.navigate("ConfirmOTP");
但我总是得到这个错误:
未定义不是对象(评估“this.props.navigation.navigate”)
然后我试着像这样改变我的Authentication
屏幕
.....
<LoginOrSignup navigation={this.props.navigation}/>
.....
错误消失了,但它没有导航到下一个屏幕。我还在学习。任何帮助将不胜感激。
解决方案
您需要将您的屏幕注册到路线。这可以是使用 react-navigation 的 createStackNavigator 的示例。
import ConfirmOtp from "./ConfirmOtp";
import { createStackNavigator } from "react-navigation";
class LoginOrSignup extends Component {
render() {
return (
<View>
<Button onClick={() => this.props.navigation.navigate("ConfirmOtp")}/>
</View>
)
}
}
export default createStackNavigator({
LoginOrSignup {
screen: LoginOrSignup
},
ConfirmOtp: {
screen: ConfirmOtp
}
});
推荐阅读
- typescript - 键入我们知道是字符串的对象的属性
- java - 基本身份验证 Java SOAP WebService 客户端
- java - 当我从用户那里得到输入时,为什么我的 java 代码会抛出错误?
- reactjs - 嵌套条件路由渲染
- delphi - 在 Delphi 10.3 中找不到单元“TeeJPEG”
- php - 可以分词吗?[PHP]
- xml - 升级到 {N} 6.3 后出现“实体名称中的无效字符”,条件为 &&
- sql-server - 使用 CTE 对变量进行计数,然后在变量大于 0 时尝试使用相同的 CTE 获取行
- python-3.x - 近似非线性关系
- php - 在 laravel 6 中禁用通知错误