【问题标题】:React Native Error - undefined is not a function (evaluating '(0 _reactnavigation.switchnavigator)')React Native 错误 - 未定义不是函数(评估“(0 _reactnavigation.switchnavigator)”)
【发布时间】:2019-03-14 23:43:30
【问题描述】:

我收到此错误:未定义不是函数(正在评估“(0 _reactnavigation.switchnavigator)”)

我正在使用此链接构建一个 React Native 模板:https://medium.com/react-native-training/react-native-firebase-authentication-7652e1d2c8a2

这是我的 App.js 文件:

import React from 'react'
import { StyleSheet, Platform, Image, Text, View } from 'react-native'
import { SwitchNavigator } from 'react-navigation'
// import the different screens
import Loading from './Loading'
import SignUp from './SignUp'
import Login from './Login'
import Main from './Main'
// create our app's navigation stack
const App = SwitchNavigator(
  {
    Loading,
    SignUp,
    Login,
    Main
  },
  {
    initialRouteName: 'Loading'
  }
)
export default App

我的 package.json 文件显示:

  "dependencies": {
    "react": "16.6.3",
    "react-native": "0.58.0-rc.2",
    "react-native-firebase": "^5.2.0",
    "react-navigation": "^3.3.2"
  }

【问题讨论】:

    标签: reactjs react-native


    【解决方案1】:

    阅读 Do react-navigation 的文档。这里是link。改成这样

    import React from 'react'
    import { StyleSheet, Platform, Image, Text, View } from 'react-native'
    import { createSwitchNavigator } from 'react-navigation' /////change here
    // import the different screens
    import Loading from './Loading'
    import SignUp from './SignUp'
    import Login from './Login'
    import Main from './Main'
    // create our app's navigation stack
    const App = createSwitchNavigator ( ///////// change here
      {
        Loading,
        SignUp,
        Login,
        Main
      },
      {
        initialRouteName: 'Loading'
      }
    )
    export default App
    

    【讨论】:

      【解决方案2】:

      如果不自己设置代码,则不能 100% 确定,但看起来 react-navigator 可能对 API 进行了一些更改。尝试导入和使用 createSwitchNavigator() 而不是 SwitchNavigator(),并在此处查看有关配置的更多文档:

      https://reactnavigation.org/docs/en/switch-navigator.html

      编辑将代码放在这里,这样您就不必通过链接:

      将导入从 react-navigation 更改为:

      import { createSwitchNavigator, createAppContainer } from 'react-navigation';
      

      将 switchNavigator 构造函数调用更改为:

      export default createAppContainer(createSwitchNavigator({
          Loading,
          SignUp,
          Login,
          Main
      },
      {
          initialRouteName: 'Loading'
      }));
      

      这是文档中推荐的设置,参见Snack Example,每个路由都是 stackNavigators。不确定您是否是这样设置的,但我只是看一下那里的示例,以了解如何设置新部件。

      【讨论】:

      • 当我改用 createSwitchNavigator() 时,我收到一个新错误 - 找不到变量:createSwitchNavigator
      • 你是否将它添加到 react-navigation 的导入中?例如import { createSwitchNavigator } from 'react-navigation'
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多