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

setRootController error using react-native-navigation in Expo

我在尝试使用 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()

这有点概括,但我认为这些是必不可少的部分。我觉得我没有像 Expo 期望的那样将 rnn 的东西交给 Expo。

知道如何在 Expo 中获得 rnn 运行 吗?如果有一个我可以玩的示例回购,那就太好了。我确定我可以让 rnn 在 Expo 之外工作,所以普通的 rnn 示例可能不会有太大帮助。

因为 react-native-navigation 有原生依赖,需要你添加自定义原生代码,所以你不能将它与包外的 Expo 一起使用。

一个选择是 detach 您的项目并像那样使用包。这有失去一些世博会属性的副作用。

另一种选择是 (如果您对项目的了解不是太深) 使用 react-native-cli 创建一个新应用并将您的代码移至该项目。这具有无法使用 expo api.

的副作用

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