使用redux Provider

时间:2019-02-05 14:12:40

标签: reactjs redux react-navigation

我在使用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',
  }
);

你知道是什么问题吗?

1 个答案:

答案 0 :(得分:1)

我首先看到的是您正在App组件中渲染<App />。 这里似乎是个问题

我也不会输入这段代码

firebase.auth().onAuthStateChanged((user) => {
  if (user != null) {
        if (user.emailVerified!=null)
        {
          if (user.emailVerified == true)
          this.setState({loggedAndVerifiedOrNot: true})
        }
  }
});

在您的构造函数中,但在ComponentDidMount()