我在使用react-navigation的react-native应用程序中实现redux。 在尝试实现redux之前,反应导航已经开始工作。 我的代码是:
render(){
if (this.state.loggedAndVerifiedOrNot) {
this.props.navigation.navigate('Menu');
}
else {
this.props.navigation.navigate('Login');
}
return(null)
}
为了集成redux和提供程序,我将return(null)部分替换为:
return (
<Provider store={Store}>
<App/>
</Provider>
)
我有 TypeError:未定义不是对象(正在评估“ this.props.navigation.navigate”) 我不知道问题是从哪里来的,我没有对反应导航进行任何更改。
完整代码:
import React from 'react';
import { View, Text, Button, Image, TouchableOpacity, StyleSheet } from 'react-native';
import { createStackNavigator, StackActions, NavigationActions } from 'react-navigation';
import Listing from './Listing';
import Menu from './Menu';
import Login from './Login';
import TestRedux from './redux/Components/TestRedux';
import firebase from '@firebase/app'
import '@firebase/auth'
firebase.initializeApp({
XXXXXXXXXXX
});
export class App extends React.Component {
constructor(props){
super(props);
this.state = {
user:'',
loggedAndVerifiedOrNot: false
}
firebase.auth().onAuthStateChanged((user) => {
if (user != null) {
if (user.emailVerified!=null)
{
if (user.emailVerified == true)
this.setState({loggedAndVerifiedOrNot: true})
}
}
});
}
render(){
if (this.state.loggedAndVerifiedOrNot) {
this.props.navigation.navigate('Menu');
}
else {
this.props.navigation.navigate('Login');
}
//return(null)
return (
<Provider store={Store}>
<App/>
</Provider>
)
}
}
export default createStackNavigator({
Home: {
screen: App,
},
Login: {
screen: Login,
},
Menu: {
screen: Menu,
},
Listing: {
screen: Listing,
},
TestRedux: {
screen: TestRedux,
},
},
{
initialRouteName: 'Home',
}
);
你知道是什么问题吗?
答案 0 :(得分:1)
我首先看到的是您正在App组件中渲染<App />
。
这里似乎是个问题
我也不会输入这段代码
firebase.auth().onAuthStateChanged((user) => {
if (user != null) {
if (user.emailVerified!=null)
{
if (user.emailVerified == true)
this.setState({loggedAndVerifiedOrNot: true})
}
}
});
在您的构造函数中,但在ComponentDidMount()
中