在Expo中使用react-native-navigation的setRootController错误

时间:2017-10-16 19:28:37

标签: react-native expo react-native-navigation

在尝试使用react-native-navigation时,我一直遇到undefined is not an object (evaluating 'RCCManager.setRootController')

我尝试跟https://github.com/junedomingo/movieapp效仿,但是当它试图在Expo应用中加载项目时就打了这个。

我修改了由Expo生成的App.js,如下所示:

import HomeScreen from './screens/HomeScreen'

Navigation.registerComponent('screens.HomeScreen', () => HomeScreen)

class App extends React.Component {
  constructor(props) {
    super(props)
    this.startApp()
  }
  startApp() {
    Navigation.startTabBasedApp({
      tabs: [
        {
        label: 'One',
        screen: 'screens.HomeScreen',
        title: 'Screen One'
        },
      ]
    })
  }
}

const app = new App()

这有点让人失望,但我认为这些是必不可少的。我觉得我不会像世博会期待的那样把事情从世博会交给世博会。

知道如何在世博会上运行rnn吗?如果有一个我可以玩的例子回购,那就太好了。我相信我能在世博会之外工作,所以香草的例子可能无济于事。

1 个答案:

答案 0 :(得分:1)

因为react-native-navigation具有本机依赖性并且需要您添加自定义本机代码,所以不能将它与包中的Expo一起使用。

一个选项是detach您的项目并使用这样的包。这有一个副作用,即失去一些世博会的财产。

另一个选项是(如果你不是太深入项目)使用react-native-cli创建一个新的应用程序并将代码移动到该项目。这具有无法使用expo api的副作用。

第三种选择是使用不依赖于本机代码的导航包。一些最受欢迎的选项是react-navigationreact-native-router-flux