web-dev-qa-db-de.com

Native Reaktion: Invariante Verletzung: Die Navigationsstütze für diesen Navigator fehlt

Mein Code lautet wie folgt:

import React, {Component} from 'react';
import {Platform, StyleSheet, Text, View} from 'react-native';
import {LoginNavigator} from './src/components/login/LoginNavigator'
import {MainNavigator} from './src/components/main/MainNavigator'
import FBSDK from 'react-native-fbsdk'
import {createSwitchNavigator} from 'react-navigation'

const { AccessToken } = FBSDK

export default class App extends Component {
  constructor(props) {
    super(props)

    this.state = {
      accessToken: null
    }
  }

  componentDidMount() {
    AccessToken.getCurrentAccessToken()
    .then((data) => {
      this.setState({
        accessToken: data.accessToken
      })
    })
    .catch(error => {
      console.log(error)
    })
  }

  render() {
    const Navigator = makeRootNavigator(this.state.accessToken)
    return <Navigator />
  }
}

const makeRootNavigator = (isLoggedIn) => {
  return createSwitchNavigator(
    {
      LoginNavigator: {
        screen: LoginNavigator
      },
      MainNavigator: {
        screen: MainNavigator
      }
    },
    {
      initialRouteName: isLoggedIn ? "MainNavigator" : "LoginNavigator"
    }
  )
}

und ich bekomme den Fehler oben. Da meine Navigatoren von den in construtor erstellten Variablen abhängen, musste ich dies über render () tun. Das Befolgen von Reaktiver Dokumentation zu Anwendungscontainern hat nicht geholfen.

1
Milos

In rea-navigation v3 müssen Sie makeRootNavigator mit createAppContainer umschließen. Ändern Sie Ihren Code in:

render() {
   const Navigator = createAppContainer(makeRootNavigator(this.state.accessToken));
   return <Navigator />
}

und vergessen Sie nicht, createAppContainer über die Datei zu importieren 

import {createSwitchNavigator, createAppContainer} from 'react-navigation'
3
digit