1

I just updated RNN to version 2 and I'm stuck with my first push

I get an error :

undefined is not an object (evaluating '_reactNativeNavigation.default.push') 

other answers on stack overflow didn't help me much so far

I guess my issue is related to this.props.componentId but I couldn't find any help in the official doc as well.

or perhaps it's coming from a wrong call to the stack since I never use the id property set in App.js

I'm also wondering if I have to provide an id manually for each screen or, as it is said in the doc it will be done automatically by RNN

if someone can guide me, I'm a bit lost -_-

my code :

App.js

import { Navigation } from 'react-native-navigation';
import { Provider } from 'react-redux';

import LandingScreen from './src/screens/Landing/Landing';
import AuthScreen from './src/screens/Auth/Auth';

import configureStore from './src/store/configureStore';

import strings from './src/global/strings';

const store = configureStore();

// Landing
Navigation.registerComponentWithRedux(strings.screens.screenLanding, () => LandingScreen, Provider, store);

// Auth
Navigation.registerComponentWithRedux(strings.screens.screenAuth, () => AuthScreen, Provider, store);


// Start App

Navigation.events().registerAppLaunchedListener(() => {
  Navigation.setRoot({
    root: {
      stack:{
        id:"appStack",
        children: [
          {
            component: {
              name: strings.screens.screenLanding,
              options: {
                topBar:{
                  title:{
                    text:"Welcome"
                  }
                }
              }
            }
          }
        ]
      },

    }
  });
});

Landing.js

import React, { Component } from 'react';
import { View, Button } from 'react-native';

import Navigation from 'react-native-navigation';

import strings from '../../global/strings';

class Landing extends Component {

    goToScreen = (screenName) => {
        Navigation.push(this.props.componentId, {
            component: {
                name: screenName
            }
        })
    }

    render() {
        return (
            <View>
                <Button
                    title="Connexion"
                    onPress={() => this.goToScreen(strings.screens.screenAuth.toString())}
                />
            </View>
        )
    }
}

export default Landing;
0

1 Answer 1

1

as indicated by jinshin1013 in RNN issue tracker In Landing.js,

I should have import Navigation like this :

import { Navigation } from 'react-native-navigation
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.